我希望能夠在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