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

时间:2011-05-31 13:59:47

标签: php oop codeigniter autoload

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

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

但是如何将其添加到CodeIgniter?

3 个答案:

答案 0 :(得分:9)

您可以将上方的自动加载器添加到app/config/config.php。我之前在这个位置使用了类似的autoload函数,它的工作非常整齐。

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

由Phil Sturgeon友情提供。这种方式可能更便携。 core对您来说可能是records;但无论如何检查你的路径是否正确。此方法还可以防止加载CI_库(意外)

的任何干扰

答案 1 :(得分:0)

关于Auto-loading Resources的用户指南非常关注它。

  

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

答案 2 :(得分:-2)

我建议使用钩子将此功能添加到您的代码中。

在config / config.php中启用挂钩

$config['enable_hooks'] = TRUE;


application / config / hooks.php 中,在“pre_system”调用中添加新的挂钩,这在整个系统运行之前在core / CodeIgniter.php中发生。

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

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

首先: application / hooks / your_functions.php 并放置 __ autoload 功能以及此时所需的所有其他功能。

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

function load_initial_functions()
{
    require_once(APPPATH.'hooks/your_functions.php');
}

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