我有一个名为getPropertyValue($ object,$ property)的递归定义函数,如果在$ object中任意深度不存在$ property,则返回false,否则返回$ object内找到的第一个$属性的值。它本质上是PHP内置函数property_exists()
的通用版本我想让这个方法可链接,我知道要做到这一点,我只是在方法中返回对类实例($ this)的引用,但我已经返回,如上所述,值对应于$ object中找到的第一个$属性。
如何在仍然返回此值的同时使此方法可链接?我想有可能返回一个包含$ this和该属性值/ false的对象,如果找到/找不到它。这是一种可行的方法吗?在这种情况下实现可连接性的最佳方法是什么?
非常感谢。
答案 0 :(得分:0)
您可以通过将多个值放入数组中来返回多个值:
return array($value,$this); // so you return both.
答案 1 :(得分:0)
当您想要返回数据时,这种API并不真正起作用。
用于构建复杂对象可以是方便,其中可以使用较少的样板代码执行多种方法。这些方法倾向于以描述性方式命名,从而很好地了解所做的工作。
一个例子是'查询构建器'模式,通过链式方法构建SQL语句。
$sql = $qb->select()->from('table')->where()->field('foo')->equals('bar');
不要被愚弄,这只是让你免于使用setter。
$qb->setSelect();
$qb->setFrom('table');
$qb->setField('foo');
$qb->setEquals('bar');
显然你没有创建一个查询构建器,并且同一个API有不同的实现,但关键是它们都将数据添加到对象而不是返回它。