php - 在匿名回调中使用 'self'?

标签 php anonymous-function

举一个人为的例子,我想通过回调函数从另一个上下文调用一个 protected static 方法:

class Foo {

    protected static function toBeCalled() { }

    public static function bar() {
        functionThatAcceptsACallback(function () {
            self::toBeCalled();
        });
    }

}

这在 PHP 5.3 中可行吗?我找不到让它工作的方法...

最佳答案

It's not possible , 但它将在 5.4 中与闭包中的 $this 支持一起出现。

Added closure $this support back. (Stas)

Reference

编辑

这适用于 5.4alpha1。

    class A
    {

        private function y()
        {
            print "y".PHP_EOL;
        }

        static private function z()
        {
            print "z".PHP_EOL;
        }

        function x()
        {
            return function() {
                $this->y();
                self::z();
            };
        }

    }

    $class = new A();

    $closure = $class->x();

    $closure();

    /*
    Output:
    y
    z
    */

关于php - 在匿名回调中使用 'self'?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6644288/

相关文章:

go - 编写传递匿名函数作为参数的高阶函数

php - 转换为 int 而不是 mysql_real_escape_string 是否安全

php - PayPal:MALFORMED_REQUEST,没有其他事件

Scala匿名函数语法和返回类型

javascript - 如何在javascript匿名函数中调用类slibing函数

Matlab 函数处理工作区恶作剧

PHP Curl 发布没有标题的文件

php - Laravel 如何仅响应没有正文消息的 204 代码状态

php - 无法使用php向mysql插入数据

delphi - 在 pascal 中动态分配匿名泛型函数