有人可以用 __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!";
我不知道在这里问这个问题是否合适,但我还是要问。最近我在 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!";