Php 无法在函数类内调用全局变量
我是PHP5和类的新手,我正在努力使全局变量在函数中工作,为了更好地解释它,请查看下面的代码Php 无法在函数类内调用全局变量,php,class,global-variables,Php,Class,Global Variables,我是PHP5和类的新手,我正在努力使全局变量在函数中工作,为了更好地解释它,请查看下面的代码 class alpha{ #first function public function n_one(){ #variable $varr = 1; #inner function function n_two(){ global $varr; #Unable to get variable echo $varr;
class alpha{
#first function
public function n_one(){
#variable
$varr = 1;
#inner function
function n_two(){
global $varr;
#Unable to get variable
echo $varr;
if($varr)
{
echo 'yessssss';
}
}
echo $varr // Returns variable fine
}
}
我似乎在违反类和函数的工作方式方面做了一些错误的事情,不知道是什么。移动“内部函数”和属性
class Alpha
{
private $varr = 1;
public function n_one()
{
// to access a property ore another method, do this
$this->varr = $this->doSomething();
return $this->varr; // Returns variable fine
}
private function doSomething()
{
// manipulate $this->varr here
}
}
另外,永远不要从类内回显,而是返回变量并回显它
echo $alpha->n_one();
移动“内部函数”和属性
class Alpha
{
private $varr = 1;
public function n_one()
{
// to access a property ore another method, do this
$this->varr = $this->doSomething();
return $this->varr; // Returns variable fine
}
private function doSomething()
{
// manipulate $this->varr here
}
}
另外,永远不要从类内回显,而是返回变量并回显它
echo $alpha->n_one();
global
表示访问全局范围内的变量,而不仅仅是包含范围内的变量。当您在内部函数中引用$varr
时,它被视为$GLOBALS['varr']
如果希望它引用与外部函数中相同的变量,则还需要在此声明变量global
。否则,它是该函数中的局部变量,而内部函数访问全局变量
#first function
public function n_one(){
global $varr;
#variable
$varr = 1;
#inner function
function n_two(){
global $varr;
#Unable to get variable
echo $varr;
if($varr)
{
echo 'yessssss';
}
}
echo $varr // Returns variable fine
}
或者,您可以使用use()
声明来声明应从外部范围继承的变量
#inner function
function n_two() use($varr) {
global $varr;
#Unable to get variable
echo $varr;
if($varr)
{
echo 'yessssss';
}
}
global
表示访问全局范围内的变量,而不仅仅是包含范围内的变量。当您在内部函数中引用$varr
时,它被视为$GLOBALS['varr']
如果希望它引用与外部函数中相同的变量,则还需要在此声明变量global
。否则,它是该函数中的局部变量,而内部函数访问全局变量
#first function
public function n_one(){
global $varr;
#variable
$varr = 1;
#inner function
function n_two(){
global $varr;
#Unable to get variable
echo $varr;
if($varr)
{
echo 'yessssss';
}
}
echo $varr // Returns variable fine
}
或者,您可以使用use()
声明来声明应从外部范围继承的变量
#inner function
function n_two() use($varr) {
global $varr;
#Unable to get variable
echo $varr;
if($varr)
{
echo 'yessssss';
}
}
内在功能?如果是闭包或类似的函数,请尝试
funition()use(){}
syntax-example#3.internal函数?如果是闭包或类似的,请尝试funition()use(){}
syntax-example#3。谢谢!我现在更明白了,我知道嵌套函数不是最好的选择,我将不得不修改我的代码。谢谢!我现在更了解它了,我知道嵌套函数不是最好的选择,我将不得不修改我的代码。