我的问题是以下问题的后续问题:用 & 符号启动 php 函数是什么意思?
问题中使用的示例代码如下:
class FacebookRestClient {
...
public function &users_hasAppPermission($ext_perm, $uid=null) {
return $this->call_method('facebook.users.hasAppPermission',
array('ext_perm' => $ext_perm, 'uid' => $uid));
}
...
}
当我们已经有参考文献($this)时,为什么还需要参考?
选择的答案引用了 PHP 手册中关于返回引用的以下内容
当您想要使用函数查找引用应绑定到哪个变量时,按引用返回很有用。不要使用按引用返回来提高性能。引擎会自动优化这一点。仅当您有正当的技术理由时才返回引用。
第二个答案给出了为什么在 PHP4 中需要这种技术的原因。但是我发现为什么在 PHP5 中需要它的答案非常令人信服。
有谁知道在 PHP5 中使用这种技术的任何正当理由?
是的,这是我代码库中的一个例子。
我为每个模型都有一个"工厂"类,例如UserFactory。当我调用UserFactory::findOne()时,我返回对模型的引用,该模型存储在UserFactory的数组中。
我这样做是为了如果我获取用户模型并修改其中的某些内容,然后稍后在我的代码中再次获取它,即使我从未返回数据库,它也会使用新信息进行更新。
例如:
<?php
$user = UserModel::findOne([ '_id' => 151 ]);
$user->status = 'disabled';
// Much later
$user = UserModel::findOne([ '_id' => 151 ]);
if ( $user->status != 'disabled' ) {
// Do stuff
}
通过引用返回是实现此目的的好方法,无需对我的数据库进行两次调用。