0

现在,看看我的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

4 回答 4

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作用域的字符串,它不再是函数的本地对象。

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

于 2013-08-13T04:45:00.377 回答
1

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

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

$func(); //=> Hello World
于 2013-08-13T04:46:33.983 回答
0

或者使用单例:

function myfunction2(){
    echo MySingleton::getInstance()->var2;
}
于 2013-08-13T04:48:32.180 回答
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

?>
于 2013-08-13T04:51:02.917 回答