我试图理解codeigniter中的框架结构,我刚刚开始,并提出了这个小小的误解。
所以有人能帮助我站在下面:
1-为什么他们使用引用来传递类的实例…我的意思是为什么不只是一个简单的变量?
2-为什么函数将类的名称存储在一个数组中而不是一个“字符串变量”(请不要将我的php术语判断为im是最差的)。?!

static $_classes = array();
                   ^^^^^^^ this cloud be just ("") or am i missing something

这是函数,所以你不会去找它。
function &load_class($class, $directory = 'libraries', $prefix = 'CI_')
    {
        static $_classes = array();

        // Does the class exist?  If so, we're done...
        if (isset($_classes[$class]))
        {
            return $_classes[$class];
        }

        $name = FALSE;

        // Look for the class first in the local application/libraries folder
        // then in the native system/libraries folder
        foreach (array(APPPATH, BASEPATH) as $path)
        {
            if (file_exists($path.$directory.'/'.$class.'.php'))
            {
                $name = $prefix.$class;

                if (class_exists($name) === FALSE)
                {
                    require($path.$directory.'/'.$class.'.php');
                }

                break;
            }
        }

        // Is the request a class extension?  If so we load it too
        if (file_exists(APPPATH.$directory.'/'.config_item('subclass_prefix').$class.'.php'))
        {
            $name = config_item('subclass_prefix').$class;

            if (class_exists($name) === FALSE)
            {
                require(APPPATH.$directory.'/'.config_item('subclass_prefix').$class.'.php');
            }
        }

        // Did we find the class?
        if ($name === FALSE)
        {
            // Note: We use exit() rather then show_error() in order to avoid a
            // self-referencing loop with the Excptions class
            exit('Unable to locate the specified class: '.$class.'.php');
        }

        // Keep track of what we just loaded
        is_loaded($class);

        $_classes[$class] = new $name();
        return $_classes[$class];
    }

最佳答案

关键是static之前的$_classes = array();关键字。这使得$_classes数组在多次调用函数之间保持其值。基本上,它们将它用作实例化类的本地缓存。为了这个目的,一根绳子不起作用。
有关静态关键字in the manual的详细信息。
至于引用返回,我认为这是PHP4的行李,CI被支持在PHP4直到2。x。您可能会发现这个“AA>”来看看从PHP4到PHP5的变化。

10-08 16:32