zoukankan      html  css  js  c++  java
  • CI框架的load_class函数

    if ( ! function_exists('load_class'))
    {
        /**
         * Class registry
         *
         * This function acts as a singleton. If the requested class does not
         * exist it is instantiated and set to a static variable. If it has
         * previously been instantiated the variable is returned.
         *
         * @param    string    the class name being requested
         * @param    string    the directory where the class should be found
         * @param    string    an optional argument to pass to the class constructor
         * @return    object
         */
        function &load_class($class, $directory = 'libraries', $param = NULL)
        {
            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 = 'CI_'.$class;
    
                    if (class_exists($name, FALSE) === FALSE)
                    {
                        require_once($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) === FALSE)
                {
                    require_once(APPPATH.$directory.'/'.$name.'.php');
                }
            }
    
            // Did we find the class?
            if ($name === FALSE)
            {
                // Note: We use exit() rather than show_error() in order to avoid a
                // self-referencing loop with the Exceptions class
                set_status_header(503);
                echo 'Unable to locate the specified class: '.$class.'.php';
                exit(5); // EXIT_UNK_CLASS
            }
    
            // Keep track of what we just loaded
            is_loaded($class);
    
            $_classes[$class] = isset($param)
                ? new $name($param)
                : new $name();
            return $_classes[$class];
        }
    }
    联系我->邮件写信
  • 相关阅读:
    Go 打印出结构化结构体
    GOPROXY设置
    python判断链表是否有环
    单链表python和go的代码
    mongo索引
    python修改srt字幕的时间轴
    python各个版本的排序
    mac使用python识别图形验证码
    selenium运行js代码笔记
    布隆过滤器
  • 原文地址:https://www.cnblogs.com/bing-yu12/p/6547721.html
Copyright © 2011-2022 走看看