Php 有人能解释一下set和get的过载吗`
我不知道这是不是问这个的好地方,但我还是要去。最近,我在Lynda.com上观看了一个名为“使用PHP进行面向对象编程”的系列节目,并谈到了有关重载的部分。在本节中,他使用了Php 有人能解释一下set和get的过载吗`,php,oop,magic-methods,Php,Oop,Magic Methods,我不知道这是不是问这个的好地方,但我还是要去。最近,我在Lynda.com上观看了一个名为“使用PHP进行面向对象编程”的系列节目,并谈到了有关重载的部分。在本节中,他使用了\uu get和\uu set魔术方法。我完全不知道这些方法在做什么,更不知道魔法方法的目的是什么。任何帮助都会很好 当试图设置或访问的属性未在类中定义或不可访问时,将调用\uuu set和\uu get。它们可以用于错误处理或其他目的(例如,像雄辩的ORM,它“神奇地”将表列映射到对象的属性) 假设你有这个班: class
\uu get
和\uu set
魔术方法。我完全不知道这些方法在做什么,更不知道魔法方法的目的是什么。任何帮助都会很好 当试图设置或访问的属性未在类中定义或不可访问时,将调用\uuu set
和\uu get
。它们可以用于错误处理或其他目的(例如,像雄辩的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->$variable=“test”
这样的值,我就无法得到它的值。我能吗?没关系,我刚拿到\uu set($name,$value)
正在将未定义的属性设置为值,而\uu get($name)
正在定义该属性。如果我错了,请纠正我。为了在未定义var
的情况下使用$a->var=“test”
,需要实现\u设置($property,$value)
方法,其主体应该是$this->$property=$value
。然后你就可以设置一个以前不存在的属性,以后再获取它的值(否则访问未定义的属性会返回NULL
。做一点实验看看。是的,我刚刚发现了。这有用吗?我会用它吗?就我个人而言,我避免“魔法”,我更喜欢在定义时:)还有,使用“神奇”属性/方法可能会混淆IDE等。了解这些东西是如何工作的总是好的,这样当你偶然发现它时,你就可以理解代码,但是如果你在你所从事的任何项目中都看不到它的用途,那就干脆不要使用它。
$a = new A();
echo $a->a;
$a->iDoNotExist;
$a->iDoNotExistEither = "boo!";