2009-10-21 85 views
0

我想檢查一下我對codeigniter的假設是否正確?無需擴展codeigniter中的類/庫

我們通常會延長,當我們試圖包含更多的功能爲核心,如MY_Controller擴展控制器類,MY_Model擴展模型等等

但是例如,如果我們在結賬庫檢索一些結帳信息(例如,product_id),我們可以只需$this->load->library('product_lib',array('product_id'=>$product_id)),並且我們可以輕鬆地從結帳庫中獲取$ this-> product_lib-> product_name等等。

$this->load這個東西有點類似於「硬代碼」簽出庫來擴展product_lib(類checkout_lib擴展product_lib),以便能夠使用product_lib中存在的任何方法/變量。

請賜教。

回答

0

在CodeIgniter中$this->load就像擁有一個資源管理器(例如resourceManager-> load(「path/to/file」)),它負責加載庫並傳遞指定的參數等,快速使用它。

因此,如果您的product_lib中有一個名爲product_name的變量,則會調用$this->product_lib->product_name訪問該變量。

真的,它只是把庫放到一個數組中,庫的名稱作爲鍵和庫的實例作爲值,所以調用$this->product_lib實際上調用類似於$loadedLibraries['product_lib']的東西並返回實例。

我希望能回答你所問的問題,我很累,可能會錯過理解你的問題。

0

我想你誤解了面向對象的範例和CI的工作方式。

$this->load與實例化庫/模型的對象或加載幫助程序文件相同。 CI有一些管理,以查看助手/庫/模型是否已經上傳。

另一方面,extends定義了一個類,告訴PHP該類將繼承父類的屬性和方法。一個類是它將產生的對象的藍圖。

也許你可以從理解OO概念開始。您可以將read this作爲開始,並參閱此處使用的參考。