在另一个函数中使用 php 的魔法函数不起作用
我想使用魔术函数 __set()
和 __get()
在 php5 类中存储 SQL 数据,在函数中使用它们时出现一些奇怪的
:
if (!isset($this->sPrimaryKey) || !isset($this->sTable))
return false;
$id = $this->{$this->sPrimaryKey};
if (empty($id))
return false;
echo 'yaay!';
问题 不工作:
if (!isset($this->sPrimaryKey) || !isset($this->sTable))
return false;
if (empty($this->{$this->sPrimaryKey}))
return false;
echo 'yaay!';
这会是一个 php 错误吗?
I want to use magic function __set()
and __get()
for storing SQL data inside a php5 class and I get some strange issue using them inside a function:
Works:
if (!isset($this->sPrimaryKey) || !isset($this->sTable))
return false;
$id = $this->{$this->sPrimaryKey};
if (empty($id))
return false;
echo 'yaay!';
Does not work:
if (!isset($this->sPrimaryKey) || !isset($this->sTable))
return false;
if (empty($this->{$this->sPrimaryKey}))
return false;
echo 'yaay!';
would this be a php bug?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
empty() 首先*调用 __isset() 方法,并且仅当它返回 true 时才调用 __get() 方法。即你的类也必须实现 __isset() 。
则
打印* edit: 。
例如,如果无法“直接”在对象的属性哈希表中找到可访问的属性,
empty() first* calls the __isset() method and only if it returns true the __get() method. i.e. your class has to implement __isset() as well.
E.g.
prints
* edit: if it can't "directly" find an accessible property in the object's property hashtable.