现在,看一下我的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样式),
这些将是如此容易访问!但我不想这样做!
所以,有可能吗?任何人都可以给我一个建议吗?感谢
答案 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
?>