CodeIgniter - 使用CodeIgniter的现有类,直接包含它们的任何问题?

时间:2009-11-06 19:55:31

标签: php codeigniter

我正在考虑使用CodeIgniter作为我下一个Web应用程序的框架。但是,我已经定义了大量的辅助类和数据结构。我可以将它们添加到应用程序的库中,但我必须重命名大量文件和类的名称以匹配criterion

我是否可以直接包含文件,就像在正常的Web应用程序上工作一样,绕过load-> library()?或者是为常用的类保留了库吗?

3 个答案:

答案 0 :(得分:8)

更好的是,将__autoload()放在config.php的底部(一个奇怪的地方,但相信我是最好的)并让它检查应用程序/类/然后检查应用程序/函数。

/*
| -------------------------------------------------------------------
|  Native Auto-load
| -------------------------------------------------------------------
| 
| Nothing to do with config/autoload.php, this allows PHP autoload to work
| for controller types and some third-party libraries.
|
*/
function __autoload($class)
{
    if(strpos($class, 'CI_') !== 0)
    {

        $lib = APPPATH . 'libraries/'. $class . EXT;
        $class = APPPATH . 'classes/'. $class . EXT;            

        if(file_exists($class))
        {
            include_once( $class );
        }
        else if(file_exists($lib))
        {
            include_once( $lib );
        }
    }
}

这样你就不必担心事情是如何加载的。按预期使用核心库并使用您的类而不包括它们。您甚至可以开始将类移到库中而无需过多担心命名约定或加载器,而libs可以是静态的,单例,无论使用这种方法。

答案 1 :(得分:2)

如果您愿意,可以直接包含它们。加载功能使事情变得更容易,但没有什么能阻止你在php中执行标准包含。我已经使用第三方课程多次完成。

如果你还在寻找一个好的PHP框架,

Kohana(CodeIgniter的一个分支)值得一试。在我看来,它比CodeIgniter好得多。

答案 2 :(得分:1)

您不需要使用CodeIgniter的类加载器,您也可以像在任何Web应用程序中一样require,或者将它们包装在可加载CI的包装器中。在我自己的项目中,我有一些来自我的基本控制器的小型独立库require,并且我将一些公共库(如Markdown)包装起来用作标准CI库。