相关疑难解决方法(0)

在PHP 5.4.0之前的匿名函数中使用`$ this`

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 访问匿名函数?

php anonymous-function

85
推荐指数
3
解决办法
5万
查看次数

我怎样才能解决PHP中缺少finally块的问题?

版本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块的概念.

任何人都有解决这种语言相当恼人的漏洞的经验吗?

php exception resource-cleanup

56
推荐指数
2
解决办法
2万
查看次数

在PHP中访问匿名函数中对象的私有/受保护属性

我试图通过匿名函数转储对象的私有属性的元素 - 当然我可以通过许多其他方式实现这一点,但这突出了一个PHP难题,我无法解决我的头脑,缺乏$ foo = $ this和使用$ foo - 但这不会给我私人的东西,所以...建议?

示例代码:

class MyClass
{
    private $payload = Array( 'a' => 'A element', 'b' => 'B element');

    static $csvOrder = Array('b','a');

    public function toCSV(){
        $values = array_map(
            function($name) use ($this) { return $this->payload[$name]; },  
            self::$csvOrder
        );
        return implode(',',$values);
    }
}

$mc = new MyClass();
print $mc->toCSV();
Run Code Online (Sandbox Code Playgroud)

php oop anonymous-function

5
推荐指数
1
解决办法
3109
查看次数

如何将 `$this` 绑定到 PHP 函数?

对于 JavaScript,我们可以这样做,将作用域绑定到所需的函数:

\n
function myFunction() {\n    alert(this.foo);\n}\n\nvar MyClass = function () {\n    this.foo = 1;\n};\n\nvar c = new MyClass();\nmyFunction.call(c); // `1`\n
Run Code Online (Sandbox Code Playgroud)\n

我想使用 PHP 做同样的事情。目前,我所看到的成功工作是这样的,但这仅适用于匿名函数:

\n
$my_function = function () {\n    var_dump($this->foo);\n};\n\nclass MyClass {\n    public $foo = 1;\n};\n\n$c = new MyClass();\nClosure::bind($my_function, $c)();\n\n// Or\xe2\x80\xa6\n// $my_function->call($c);\n
Run Code Online (Sandbox Code Playgroud)\n

这不起作用:

\n
function my_function() {\n    var_dump($this->foo);\n}\n\nclass MyClass {\n    public $foo = 1;\n};\n\n$c = new MyClass();\nClosure::bind('my_function', $c)(); // :(\ncall_user_func([$c, 'my_function']); // :(\n
Run Code Online (Sandbox Code Playgroud)\n

php oop closures

2
推荐指数
1
解决办法
2971
查看次数