Thinkphp 2 入門 (46)
次の図を見てください:
実際の状況:ユーザーコントローラー hello() メソッドがない場合
オブジェクトがこのクラスの存在しないメソッドにアクセスする場合、「マジックメソッド __call()」にアクセスします
クラスを使用していますが、このクラスはまだインクルードされていません。
自動ロード メカニズムを通じて __autoload() を処理できます。自動ロード メカニズムがこのクラスを見つけられない場合、エラーが報告されます。
は空のモジュールをリクエストします
Common フォルダー内で、ここに関数ライブラリ ファイルを置きます
の場合コントローラー内のメソッドが呼び出されると、呼び出しの前後に、プレオペレーションおよびポストオペレーションと呼ばれる追加の作業を実行できます
この URL: http://URL/index をリクエストします。 php/Admin/Goods/zhanshi メソッドが存在する場合、このアクションは App.class.php の exec() メソッド内でどこで行われますか?
は zhanshi() の実行時に最初に実行できます。 の後処理は、の実行後に実行できます。
解決策:
存在しないクラスのインスタンス化は、__autoload() メカニズムを通じて自動的にロードされます。 。
tp フレームワークの __autoload() はどこにありますか? Think.class.php
で、A() メソッド
A('Module Controller') を通じてコントローラー オブジェクトをインスタンス化します。 例: A('Goods')
A('group/controller') 例: A('home/Ucenter');
A('project://group/controller') 例: A('shop://home/ Ucenter');
A() メソッドには import() メソッドへの呼び出しがネストされています。このメソッドは、対応するコントローラーを取得し、そのコントローラーの導入を要求するのに役立ちます。 A() メソッドは、オブジェクト
R ("project://group/controller/operation") メソッド
を直接インスタンス化し、インスタンス化されたコントローラーを導入します。オブジェクトとメソッド呼び出しはすべて継承されます。
R('モジュール コントローラー/操作') 例: A('グッズ')
R('グループ/コントローラー/操作') 例: A('home/Ucenter/ members');
R('project://group/controller/operation') 例: A('shop://home/Ucenter/members');
R() メソッド内で A() メソッドが呼び出されます
A() メソッド内で import() メソッドが呼び出されます