2011-03-18 48 views
2

我最近一直在玩Codeigniter,看看我能從中學到什麼。我遇到了加載函數,並想知道是否有人知道它是如何完成的。基本上,它看起來像這樣:複製Codeigniters加載函數

$this->load->model('Model_name'); 
$this->Model_name->some_function(); 

現在加載顯然是一個類,並創建一個實例並調用加載。並且load包含類「Model_name」並創建它的一個實例。但是我無法解決的部分是,load類如何創建一個名爲「Model_name」的「類變量」,以用於代碼的第二行?我怎麼會真的去實現這個在PHP中。

謝謝。

回答

0

該類基本上做的是記住所有創建的對象(例如$ this),然後通過引用將新創建的類作爲變量分配給這些類。

function Load($className) 
{ 
    $newClass = new $className(); 
    foreach($this->objects as &$object) //objects is array with created objects 
    $object->$className = $newClass; 
} 

但是,它在背景中做了比這更多的東西。你知道你可以打開'loader.php'然後閱讀它的功能,對吧?

0

這種東西適用於像PHP這樣的解釋型語言。雖然這可能是非常混亂的圖片,特別是如果你有嚴格的語言,如C++,C#等經驗

這個想法是,有PHP函數可以執行PHP代碼,結果將在其他地方可見劇本。