PHP手册说明
$this在PHP 5.4.0之前无法使用匿名函数
在匿名功能页面上.但我发现我可以通过赋值$this给变量并将变量传递给use函数定义中的语句来使其工作.
$CI = $this;
$callback = function () use ($CI) {
$CI->public_method();
};
Run Code Online (Sandbox Code Playgroud)
这是一个好习惯吗?
有没有更好的方法来$this使用PHP 5.3 访问匿名函数?
版本5.5之前的PHP没有最终块 - 即,在大多数敏感语言中,您可以执行以下操作:
try {
//do something
} catch(Exception ex) {
//handle an error
} finally {
//clean up after yourself
}
Run Code Online (Sandbox Code Playgroud)
PHP没有finally块的概念.
任何人都有解决这种语言相当恼人的漏洞的经验吗?
我试图从一个闭包中引用一个对象的私有变量.下面的代码似乎有效,但它抱怨Fatal error: Cannot access self:: when no class scope is active in test.php on line 12和Fatal error: Using $this when not in object context in test.php on line 20.
任何想法如何使用闭包完成相同的结果,同时保持变量私有和没有帮助函数(击败私有变量的整个想法).
class MyClass
{
static private $_var1;
private $_var2;
static function setVar1( $value )
{
$closure = function () use ( $value ) {
self::$_var1 = $value;
};
$closure();
}
function setVar2( $value )
{
$closure = function () use ( $value ) {
$this->_var2 = $value; …Run Code Online (Sandbox Code Playgroud)