0

codeigniter に関する私の仮定が正しいかどうかを確認したいですか?

MY_Controller が Controller を拡張する、MY_Model が Model を拡張するなど、より多くの機能をコアに含めようとする場合、通常はクラスを拡張します。

しかし、たとえば、チェックアウト ライブラリでチェックアウト情報 (例: product_id) を取得している場合、チェックアウト ライブラリ$this->load->library('product_lib',array('product_id'=>$product_id))から $this->product_lib->product_name などを簡単に取得できますよね?

これ$this->loadは、product_lib (class checkout_lib extends product_lib) を拡張して、product_lib にあるメソッド/変数を使用できるようにするための「ハード コード」チェックアウト ライブラリと同じようなものです。

教えてください。

4

2 に答える 2

0

OO パラダイムと CI の仕組みを誤解していると思います。

$this->loadライブラリ/モデルのオブジェクトをインスタンス化するか、ヘルパー ファイルをロードするのと同じです。CIには、ヘルパー/ライブラリ/モデルがすでにアップロードされているかどうかを確認するための何らかの管理があります。

一方、クラスを定義するときに extends を使用して、クラスが親クラスのプロパティとメソッドを継承することを PHP に伝えます。クラスは、それが生成するオブジェクトの設計図です。

最初に OO の概念を理解することから始めることができます。これを最初に読んで、そこで使用されているリファレンスを確認してください。

于 2010-01-13T10:29:03.720 に答える
0

CodeIgniter$this->loadは、リソース マネージャー (例: resourceManager->load("path/to/file")) を持っているようなもので、ライブラリの読み込み、指定した引数の受け渡しなどを処理するため、簡単にすぐに使用できるようになります。それ。

したがって、product_lib に product_name という名前の変数がある場合、yes 呼び出し$this->product_lib->product_nameはその変数にアクセスします。

実際には、ライブラリ名をキーとして、ライブラリのインスタンスを値として、ライブラリを配列に配置するだけなので、呼び出し$this->product_libは実際にはインスタンスを呼び出す$loadedLibraries['product_lib']のと同じようなものを呼び出して返します。

あなたの質問に答えてくれることを願っています。私はかなり疲れていて、あなたの質問を理解できなかったかもしれません。

于 2009-10-21T13:02:59.250 に答える