为什么嵌套函数中无法访问类属性?那我该如何使用呢?
class MyClass
{
public $var = "I'm a class property!";
public function Test()
{
function SubTest()
{
// I need to $this->var; here
}
}
}
我想在echo
中$var
SubTest()
。有可能吗?
答案 0 :(得分:1)
这样做怎么办?
<?php
class MyClass{
public $var = "I'm a class property!";
public function Test(){
function SubTest(&$father){
$father->var = 'something else';
echo 'here ! '.$father->var.'<br />';
}
echo $this->var.'<br />';
SubTest($this);
echo $this->var.'<br />';
}
}
$test = new MyClass();
echo $test->var.'<br />';
$test->Test();
?>
给出了这个结果:
I'm a class property!
I'm a class property!
here ! something else
something else
答案 1 :(得分:1)
使用闭包怎么样?自PHP 5.4以来,$this
在闭包内可见。
除此之外,你不应该在这样的方法中定义一个函数。 PHP函数是全局的,意味着它们的行为方式与在外部声明的方式完全相同。
class MyClass
{
public $var = "I'm a class property!";
public function Test($str)
{
$callback = function() use ($str)
{
print_r($this->var . " " . $str);
};
return call_user_func($callback);
}
}
$a = new MyClass();
$a->Test("My name is not Foo.");