我正在学习OOP中的魔术方法,在搜索了Stackoverflow,php.net和谷歌以后,我发现这两种方法的相似性的解释有点模糊。
最大的问题是关于__isset,因为__get本身非常简单。
我理解__get()为: " __ get()用于从不可访问的属性中读取数据。"
在下面的方法中有效,当调用不存在的属性时,它会清楚地解释它的作用。
public function __get($propertyName) {
echo "<hr>attempted to read non-existing property: $propertyName<hr>";
}
但那么__isset()呢?如果你已经有一个__get()魔术方法,是否仍然可以使用__isset()?
在写这篇文章时,我想我可以在类中实现__isset(),如果我从$ _POST收集数据就像我在类之外使用isset()一样。这会有区别吗?
我检查了What is the difference between isset() and __isset()?,遗憾的是,这似乎没有回答我的问题。