CodeIgniter - 将现有类与 CodeIgniter 一起使用,直接包含它们有什么问题吗?

问题描述 投票:0回答:3

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

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

php codeigniter
3个回答
8
投票

更好的是,在 config.php 底部放一个

__autoload()
(一个奇怪的地方,但相信我,这是最好的)并让它检查 application/classes/ 然后检查 application/functions。

/*
| -------------------------------------------------------------------
|  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;
        }
    }
}

这样你就不需要担心东西是如何加载的。按预期使用核心库并使用您的类而不包含它们。您甚至可以开始将类转移为库,而无需过多担心命名约定或加载器,并且库可以是静态的、单例的,无论使用此方法如何。


2
投票

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

如果您仍在寻找一个好的 PHP 框架,

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


1
投票

您不需要使用 CodeIgniter 的类加载器,您也可以像在任何 Web 应用程序中一样

require
它们,或者将它们包装在 CI 可加载包装器中。在我自己的项目中,我有一些来自基本控制器的小型独立库,并且我包装了一些公共库(例如 Markdown)以用作标准 CI 库。
    

© www.soinside.com 2019 - 2024. All rights reserved.