この記事では主に ThinkPHP でのモジュール間呼び出しの実装を紹介します。これには特定の参照値があります。必要な友達はそれを参照できます。
$this を使用すると、現在のモジュール内のメソッドを呼び出すことができます。多くの場合、他のモジュールのメソッドが現在のモジュールで呼び出されることがよくあります。この記事では主にThinkPHPのモジュール間呼び出し操作を紹介しますので、必要な方は参考にしてください
$thisを使うと現在のモジュール内のメソッドを呼び出すことができますが、多くの場合、現在のモジュール内で他のモジュールのメソッドが呼び出されることもよくあります。 ThinkPHP には、モジュール間の呼び出しの問題に対処するために、A メソッドと R メソッドという 2 つの特別な大文字メソッドが組み込まれています。
現在、Index モジュールにはインデックス操作があります。User モジュールには showName 操作があります。User モジュールと showName 操作の具体的なコードは次のとおりです。
<?php class UserAction extends Action{ public function showName(){ echo "Hello World"; } } ?>
で上記の showName 操作を呼び出します。 Index モジュールのインデックス操作。
A メソッドを使用してモジュール間の操作を呼び出す
A メソッドは、他のモジュールをインスタンス化するために使用されます (new キーワードに相当) モジュールがインスタンス化された後、モジュール内の操作をオブジェクトの形式で呼び出すことができます。
Index モジュールのインデックス操作で User モジュールの showName 操作例を呼び出します:
<?php class IndexAction extends Action{ public function index(){ header("Content-Type:text/html; charset=utf-8"); // 实例化 User 模块 $User = A('User'); // 调用 User 模块中的方法 $User->showName(); } } ?>
メソッドはグループ間呼び出しおよびプロジェクト間呼び出しモジュールもサポートしており、構文は次のとおりです:
A('<プロジェクト名: //><グループ名/>モジュール名')
// 常用例子如下 A('User') //调用当前项目的 User 模块,如上面的例子 A('Admin://User') //调用 Admin 项目的 User 模块 A('Admin/User') //调用 Admin 分组的 User 模块 A('Admin://Tool/User') //调用 Admin 项目 Tool 分组的 User 模块
R メソッドを介してモジュール間の操作を呼び出す
ThinkPHP は、他のモジュールの操作メソッド、A メソッドを使用した上記の例は、R メソッドに変更されます:
<?php class IndexAction extends Action{ public function index(){ header("Content-Type:text/html; charset=utf-8"); // 调用 User 模块中的方法 R('User/showName'); } } ?>
R メソッドは、グループ間呼び出しおよびプロジェクト間呼び出しメソッドもサポートします。構文は次のとおりです。
R('<プロジェクト名://><グループ名/>モジュール名/操作'<, array()>)
// 常用例子如下 R('User/showName') //调用当前项目的 User 模块的 showName 方法,如上面的例子 R('Admin://User/showName') //调用 Admin 项目 User 模块的 showName 方法 R('Admin/User/showName') //调用 Admin 分组 User 模块的 showName 方法 R('Admin://Tool/User/info') //调用 Admin 项目 Tool 分组的 User 模块的 info 方法 R 方法接收参数 R 方法也支持对调用的方法传入参数,因为实际上调动的操作,可能是需要传入参数的。 R 方法的第二个参数为数组,该数组将作为被调用操作的参数传入。如下面的例子所示: R( 'User/showName',array(5) );
この例は、showNameオペレーションはそのようなパラメータを受け入れます。対応する showName 操作は次のようになります:
<?php class UserAction extends Action{ public function showName($id){ // 根据 id 参数获取用户信息的代码 } } ?>
複数のパラメータを渡すには、R メソッドの array() パラメータ配列で複数の要素を順番に定義します。
A メソッドまたは R メソッド?
上記の例からわかるように、A メソッドと R メソッドはどちらも他のモジュールの操作を呼び出すことができます。A メソッドと R メソッドのどちらを使用する方が良いでしょうか。ここでの提案は次のとおりです。 他のモジュールで複数のメソッドを使用したい場合は、オブジェクトの複数のインスタンス化を避けるために、オブジェクトを通じてモジュールの異なるメソッドを呼び出すメソッド A を使用することをお勧めします。他のモジュールのメソッドを使用する メソッドの 1 つであり、間違いなく R メソッドが最も簡潔です。
以上がThinkPHP はモジュール間の呼び出しを実装しますの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。