如何将外部$ var传递给函数()

时间:2013-08-13 04:42:43

标签: php function oop

现在,看一下我的page.php,我会在里面解释我的问题。

<?php
$var= "<p>Hello world</p>";

function myfunction1($a){
echo $a;
}

//then
myfunction1($var);//-->OK, return "Hello world!"


//but, the thing is, i don't want to pass any argument into myfunction(), 
//so i have to import the external $var into myfuntion2()


function myfunction2(nothing here){
//what's here?
}

myfunction2();//i want to do this

?>

当然,如果我将所有这些包装在CLASS中,那么myfunction()$var 会变成method $amp; property (OOP样式), 这些将是如此容易访问!但我不想这样做!

所以,有可能吗?任何人都可以给我一个建议吗?感谢

4 个答案:

答案 0 :(得分:3)

如果您不希望在函数中传递任何参数,那么只能使用global

function myfunction2(){
     global $var;
}

但是我应该警告你,使用global非常糟糕,所以除非你知道它的行为,否则不要使用它。您的global $var可以在功能中更改,例如

$var = 2; //Initial value
function myfunction2(){
     global $var;
     $var = 'changed';
}
myfunction2(); //$var is now holding 'changed'. 2 is now lost

因此,从现在开始,$var将保留字符串changed,因为$var具有global范围,因此该函数不再是本地的。

或者,您可以阅读this回答以将函数作为函数参数传递

答案 1 :(得分:1)

您可以在现代版本的PHP中执行此操作:

$var = 'World';
$func = function() use($var){
  echo "Hello $var";
};

$func(); //=> Hello World

答案 2 :(得分:0)

或使用单身人士:

function myfunction2(){
    echo MySingleton::getInstance()->var2;
}

答案 3 :(得分:0)

你必须在函数中声明变量为全局,然后你可以在函数内部使用变量而不将其作为参数传递。

像这样,

<?php
   $var= "<p>Hello world</p>";

   function myfunction1($a){
     echo $a;
   }
  //then
  myfunction1($var);//-->OK, return "Hello world!"

  //but, the thing is, i don't want to pass any argument into myfunction(), so i  have to    import the external $var into myfuntion2()
  function myfunction2(){
     global $var;
     echo $var;
  }

  myfunction2();//i want to do this

?>