试图理解与zend相关的一些功能

时间:2013-04-18 02:05:47

标签: php zend-framework

/**
    * getter method, basically same as offsetGet().
    *
    * This method can be called from an object of type Zend_Registry, or it
    * can be called statically.  In the latter case, it uses the default
    * static instance stored in the class.
    *
    * @param string $index - get the value associated with $index
    * @return mixed
    * @throws Zend_Exception if no entry is registerd for $index.
    */
public static function get($index)
    {
        $instance = self::getInstance();

        if (!$instance->offsetExists($index))
        {
            if ($instance->lazyLoad($index, $return))
            {
                return $return;
            }
            else
            {
                throw new Zend_Exception("No entry is registered for key '$index'");
            }
        }

        return $instance->offsetGet($index);
    }
...
public static function getDb()
    {
        return self::get('db');
    }

...

这取自Xenforo / Application.php,虽然评论很明确,但仍有一些问题:

  1. $instance = self::getInstance();这条线在这里意味着什么?
  2. $instance->lazyLoad;我找不到这个方法的声明:lazyLoad,它还是Zend文件吗?
  3. $instance->offsetGet($index),我在 SPL.php 中看到了它的声明,它是:
    public function offsetGet ($index) {},但{}内部是空的,那么这个功能如何?

1 个答案:

答案 0 :(得分:0)

以下是关于你的三个问题的一些简要说明

<强> 1。 $ instance = self :: getInstance();这条线在这里意味着什么?

答案1。 getInstance方法用于获取该类实例而不执行$ test = new class_name(); getInstance方法是静态的,因此您可以在不声明新的class_name()的情况下获取该类实例; 在getInstance方法中,它的检查是否设置了_instance?如果没有设置,则创建自己的类实例,然后返回该实例。

<强> 2。 $实例 - &GT; lazyLoad;我找不到这个方法的声明:lazyLoad,它还是Zend文件吗?

回答2。你可以从下面的链接了解lazyload,这样你就可以更好地了解lazyload。 Link

第3。 $ instance-&gt; offsetGet($ index),我在SPL.php中看到它的声明,它是:public function offsetGet($ index){},但它在{}里面是空的,那么这个函数怎么样?

回答3. 此方法可以从Zend_Registry类型的对象中调用,也可以静态调用。在后一种情况下,它使用存储在类中的默认静态实例。

参数: string $ index - 获取与$ index关联的值 返回: 杂 例外: 如果没有为$ index注册任何条目,则为Zend_Exception。

请告诉我,如果我可以帮助你更多..