我希望能够在CodeIgniter的控制器中使用OOP并创建新对象。所以我需要使用自动加载功能:如何将自动加载函数添加到CodeIgniter中?
function __autoload($classname)
{
require_once("../records/$classname.php");
}
但是我怎样才能将它添加到CodeIgniter?
我希望能够在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);
}
}
Courtesy of Phil Sturgeon。这种方式可能更便携。 core
可能会为你records
;但无论如何检查你的路径是否正确。这种方法还可以防止与装载CI_
库(意外)
用户指南,了解有关Auto-loading Resources是它漂亮的夹板。
要自动加载资源,请打开application/config/autoload.php文件,并将要加载的项目添加到自动加载数组中。您会在该文件中找到与每种类型的项目对应的说明。
我现在尝试这样做,创建一个文件'loader.php'和自动加载它作为“配置”文件。但它看起来像函数是在负载执行,所以我得到这个错误信息:'消息:require_once(../记录/ CI_Exceptions.php):未能打开流:没有这样的文件或directory'有什么建议? – Jonas 2011-05-31 14:18:00
可能是你需要使你的自动加载功能更多“inteligent”例如更换'_'为'/',使路径绝对所以这将使CI_Exceptions.php - > CI/Exceptions.php – 2011-05-31 16:56:54
即自动加载部分不自动 - 加载。它由Codeigniter预加载类。 OP想要的是在尝试实例化它们时自动加载类,这就是接受的答案。 – 2011-10-30 01:26:30
我建议以这个功能添加到您的代码中使用挂钩的任何干扰。
在你的配置使钩/ config.php文件
$config['enable_hooks'] = TRUE;
在你的application/config/hooks.php对 “pre_system” 的号召,这发生在核心/ CodeIgniter.php添加新的挂钩在整个系统运行之前。
$hook['pre_system'] = array( 0 => array( 'function' => 'load_initial_functions', 'filename' => 'your_hooks.php', 'filepath' => 'hooks' ) );
然后在钩文件夹中创建两个文件:
第一:应用/钩/ your_functions.php,把你的__autoload功能,您希望可以在这个点的所有其他职能。
二:应用/钩/ your_hooks.php,并把这个代码:
function load_initial_functions() { require_once(APPPATH.'hooks/your_functions.php'); }
这将使所有的在你的代码中使用your_functions.php到处定义你的函数。
您应该链接到您的其他问题,以更好地espress您的需求;) – 2011-05-31 14:17:14