我希望能够在CodeIgniter中使用OOP并在我的控制器中创建新对象。所以我需要使用自动加载功能:
function __autoload( $classname )
{
require_once("../records/$classname.php");
}
但是如何将其添加到CodeIgniter?
答案 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中定义的所有函数在代码中随处可用。