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

Could someone please explain overloading with __set and __get?`

我不知道在这里问这个问题是否合适,但我还是要问。最近我在 Lynda.com 上观看了一个名为 "Object-Oriented Programming with PHP" 的系列节目,并且谈到了关于重载的部分。在本节中,他使用了 __get__set 魔术方法。我完全不知道这些在做什么,甚至更不知道魔法方法的目的是什么。任何帮助都会很棒!

__set__get 当您尝试设置或访问的 属性 未在您的 class 中定义或不可访问时调用。它们可用于错误处理或其他一些目的(例如 Eloquent ORM,"magically" 将 table 列映射到对象的属性)。

假设你有这个 class:

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!";