如何向CodeIgniter添加自动加载功能


How to add autoload-function to CodeIgniter?

我希望能够使用OOP并在CodeIgniter中的控制器中创建新对象。所以我需要使用一个自动加载功能:

function __autoload( $classname )
{
    require_once("../records/$classname.php");
} 

但我如何将其添加到CodeIgniter?

您可以将上面的自动加载器添加到app/config/config.php中。我以前在这个位置使用过类似的autoload函数,它的工作非常巧妙。

function __autoload($class)
{
    if (strpos($class, 'CI_') !== 0)
    {
        @include_once(APPPATH . 'core/' . $class . EXT);
    }
} 

由菲尔·斯特金提供。这种方式可能更便携。core对你来说可能就是records;但无论如何都要检查你的路径是否正确。此方法还可以防止对加载CI_库(意外)的任何干扰

关于自动加载资源的用户指南对此非常挑剔

要自动加载资源,请打开application/config/autoload.php文件,然后将要加载的项添加到自动加载数组中。您可以在该文件中找到与每种类型的项目相对应的说明。

我建议使用钩子将此函数添加到代码中

在config/config.php 中启用挂钩

$config['enable_hooks']=TRUE;


application/config/hooks.php中,在"pre_system"调用上添加新的钩子,该调用在整个系统运行之前发生在core/CodeIgniter.php中。

$hook['pre_system']=数组(0=>数组('function'=>'load_initial_functions','filename]=>'your_hooks.php','filepath'=>'hook'));

然后在hooks文件夹中创建两个文件:

首先:application/hooks/your_functions.php并放置您的__autoload函数和您希望此时可用的所有其他函数

第二个:application/hooks/your_hooks.php并放置此代码:

函数加载初始化函数(){require_one(APPPATH.'books/your_functions.php');}

这将使您的_functions.php中定义的所有函数在代码中随处可用。