CodeIgniter では、コントローラーは HTTP リクエストを処理し、応答を提供する中心的なコンポーネントとして機能します。ただし、コードを整理してモジュール化した状態に保つために、他のコントローラー内の関数からコントローラーをロードすることが望ましい場合があります。この記事では、CodeIgniter 2 で他のコントローラー内からコントローラーを動的に読み込む方法について説明します。
動機
ライブラリをプロジェクトに統合し、必要な操作を行う状況を考えてみましょう。各コントローラーに明示的にロードせずに使用するには。ライブラリを別のコントローラーにカプセル化することで、よりクリーンな構造を維持し、関連するコードを分離できます。
従来のモジュール アプローチ
CodeIgniter の従来のモジュール アプローチでは、コントローラー名の指定が必要です。 URL 内 (例: "http://example.com/maincontroller/function") または「http://example.com/othercontroller/function」。これは機能しますが、URL に不必要な煩雑さが追加されます。
動的コントローラーの読み込み
コントローラーを指定せずに、別のコントローラーの関数内からコントローラーをロードするにはURL では、次の手順を使用できます:
Loadコントローラ ライブラリ: コントローラ内で、次の構文を使用してコントローラ ライブラリをロードします。
$this->load->library('../controllers/whathever');
「何でも」をロードするコントローラの名前に置き換えます。
コントローラーのメソッドにアクセス: コントローラーがロードされると、次を使用してそのメソッドを呼び出すことができます。次の構文:
$this->whathever->functionname();
「whathever」をコントローラーの名前に置き換え、「functionname」をアクセスするメソッドの名前に置き換えます。
例
次のことを考えてみましょう例:
// In your Main Controller class Main extends CI_Controller { public function index() { // Load the Other Controller $this->load->library('../controllers/other'); // Call a method from the Other Controller $this->other->my_function(); } } // In your Other Controller class Other extends CI_Controller { public function my_function() { // Your code here... } }
これらの手順に従うと、URL にコントローラー名を追加することなく、CodeIgniter の他のコントローラー内からコントローラーを動的にロードできます。このアプローチにより、コードの再利用性、編成、保守性が促進されます。
以上がCodeIgniter で他のコントローラー内からコントローラーを動的にロードするにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。