关闭如何使用而不是类方法?

时间:2016-07-25 19:30:32

标签: php class methods closures

如何在没有__get__set的情况下编写适用于以下示例的代码。其他所有内容都可以。

class A {
    // What code to write here?
}

$a = new A();

$a->setName = function(A $a, $value)
{
    $a->name = $value;
};

$a->getName = function(A $a)
{
    return $a->name;
};

$a->setName('Vasya');
echo $a->getName1();

1 个答案:

答案 0 :(得分:1)

朋友们,我解决了这个问题

class A {
    public function __call($name, $arguments) {
        try{
            if(property_exists($this,$name) && is_callable($this->$name)){
                $arguments = array_merge([__CLASS__=>$this],$arguments);
                return call_user_func_array($this->$name, $arguments);
            }
            else{
                throw new Exception($name.' is not a callable');
            }
        }
        catch (Exception $e)
        {
            echo $e->getMessage();
            exit;
        }
    }
}

$a = new A();

$a->setName = function(A $a, $value)
{
    $a->name = $value;
};

$a->getName = function(A $a)
{
    return $a->name;
};

$a->setName('John');
echo $a->getName();

http://php.net/manual/ru/functions.anonymous.php#117504