最近开发zen cart有些问题想咨询下!
程序员文章站
2024-04-02 23:57:52
...
最近在用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()的意思应该是表示某类的方法!至于在前面加个&是引用么?
为什么在定义方法时也加个&
求大神详细解释下!
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 适用于调度的,也不推荐这种写法。太隐晦了