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