当前位置:Gxlcms > PHP教程 > 最近开发zencart有些问题想咨询下!

最近开发zencart有些问题想咨询下!

时间:2021-07-01 10:21:17 帮助过:15人阅读

最近在用zen cart商城系统做东西!看到了一下代码!
function notify($eventID, $paramArray = array()) {
$observers = & base::getStaticObserver();
if (!is_null($observers))
{
foreach($observers as $key=>$obs) {
if ($obs['eventID'] == $eventID) {
$obs['obs']->update($this, $eventID, $paramArray);
}
}
}
}

function & getStaticObserver() {
return base::getStaticProperty('observer');
}
在类里面每个function后面都会出现个& 是什么意思。
base::getStaticObserver()的意思应该是表示某类的方法!至于在前面加个&是引用么?
为什么在定义方法时也加个&
求大神详细解释下!


回复讨论(解决方案)

& 引用

第一处 表示得到的是一个引用
第二处 表示该方法将返回一个引用

最终,$observers 是 base::$observer 的引用
对 $observers 的任何修改都会影响到 base::$observer
进而会影响到所有使用 base::$observer 的行为

如果 base::$observer 不是用于调度的话,这种写法是不可取的
当然,即便 base::$observer 适用于调度的,也不推荐这种写法。太隐晦了

人气教程排行