有人可以用__set和__get来解释重载吗?`

时间:2015-10-25 20:52:37

标签: php oop magic-methods

我不知道这是否适合问这个问题,但我还是会去。最近,我一直在Lynda.com上观看一系列名为"面向对象的PHP编程"并得到了一个关于超载的部分。在本节中,他使用__get__set魔术方法。我完全迷失了这些做法,甚至更加迷失于Magic Methods的目的。任何帮助都会很棒!

1 个答案:

答案 0 :(得分:1)

当您尝试设置或访问的属性未在您的类中定义或无法访问时,将调用

__set__get。它们可用于错误处理或其他一些目的(例如,Eloquent ORM,其中"神奇地"将表列映射到对象的属性)。

让我们说你有这个课程:

class A {

    var $a = "I'm A<br/>";

    function __get($property)
    {
        echo "You tried to access '{$property}' which does not exist!<br/>";
    } // __get

    function __set($property, $value)
    {
        echo "You tried to set '{$property}' to '{$value}', but '{$property}' is not defined<br/>";
    } // __set

}

然后,执行此操作以查看结果:

$a = new A();

echo $a->a;

$a->iDoNotExist;

$a->iDoNotExistEither = "boo!";