最近在用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()的意思应该是表示某类的方法!至于在前面加个&是引用么?
为什么在定义方法时也加个&
求大神详细解释下!

解决方案 »

  1.   

    & 引用第一处 表示得到的是一个引用
    第二处 表示该方法将返回一个引用最终,$observers 是 base::$observer 的引用
    对 $observers 的任何修改都会影响到 base::$observer
    进而会影响到所有使用 base::$observer 的行为如果 base::$observer 不是用于调度的话,这种写法是不可取的
    当然,即便 base::$observer 适用于调度的,也不推荐这种写法。太隐晦了