我希望能够使用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中定义的所有函数在代码中随处可用。