ThinkPHP implements cross-module calling

不言
Release: 2023-03-30 08:38:02
Original
1851 people have browsed it

This article mainly introduces the implementation of cross-module calling in ThinkPHP, which has certain reference value. Now I share it with everyone. Friends in need can refer to it

Use $this to call methods in the current module , but in many cases methods of other modules are often called in the current module. This article mainly introduces ThinkPHP cross-module calling operations. Friends who need it can refer to

Using $this can call methods in the current module, but in many cases, methods of other modules are often called in the current module. . ThinkPHP has built-in two special capital letter methods, A method and R method, to deal with cross-module calling issues.

Currently, there is an index operation in the Index module. The User module has a showName operation. The specific codes for the User module and showName operation are as follows:

<?php
class UserAction extends Action{
 public function showName(){
 echo "Hello World";
 }
}
?>
Copy after login

We will use Index The above showName operation is called in the index operation of the module.

Cross-module call operation through A method

A method is used to instantiate other modules (equivalent to the new keyword). After the module is instantiated, it can be called within the module as an object. operation.
Call the showName operation example of the User module in the index operation of the Index module:

<?php
class IndexAction extends Action{
 public function index(){
 header("Content-Type:text/html; charset=utf-8");
 // 实例化 User 模块
 $User = A(&#39;User&#39;);
 // 调用 User 模块中的方法
 $User->showName();
 }
}
?>
Copy after login

A method also supports cross-group calling and cross-project calling modules. The syntax is as follows:

A('Module name')

##

// 常用例子如下
A(&#39;User&#39;) //调用当前项目的 User 模块,如上面的例子
A(&#39;Admin://User&#39;) //调用 Admin 项目的 User 模块
A(&#39;Admin/User&#39;) //调用 Admin 分组的 User 模块
A(&#39;Admin://Tool/User&#39;) //调用 Admin 项目 Tool 分组的 User 模块
Copy after login

Call operations across modules through the R method


ThinkPHP also provides an R method that can directly call the operation methods of other modules. Change the above example of using the A method to the R method :

<?php
class IndexAction extends Action{
 public function index(){
 header("Content-Type:text/html; charset=utf-8");
 // 调用 User 模块中的方法
 R(&#39;User/showName&#39;);
 }
}
?>
Copy after login

The R method also supports cross-group calling and cross-project calling methods. The syntax is as follows:

R('< ;Project name://>Module name/Operation'<, array()>)

// 常用例子如下
R(&#39;User/showName&#39;) //调用当前项目的 User 模块的 showName 方法,如上面的例子
R(&#39;Admin://User/showName&#39;) //调用 Admin 项目 User 模块的 showName 方法
R(&#39;Admin/User/showName&#39;) //调用 Admin 分组 User 模块的 showName 方法
R(&#39;Admin://Tool/User/info&#39;) //调用 Admin 项目 Tool 分组的 User 模块的 info 方法
R 方法接收参数
R 方法也支持对调用的方法传入参数,因为实际上调动的操作,可能是需要传入参数的。
R 方法的第二个参数为数组,该数组将作为被调用操作的参数传入。如下面的例子所示:
R( &#39;User/showName&#39;,array(5) );
Copy after login

This example indicates that the showName operation will accept 5 such a parameter. The corresponding showName operation may be:

<?php
class UserAction extends Action{
 public function showName($id){
 // 根据 id 参数获取用户信息的代码
 }
}
?>
Copy after login

To pass in multiple parameters, then define multiple elements in the array() parameter array of the R method in sequence, that is Can.


A method or R method?
As can be seen from the above example, both the A method and the R method can call the operations of other modules. Is it better to use the A method or the R method? The suggestions here are as follows:
If you want to use multiple methods in other modules, it is recommended to use method A to call different methods of the module through objects to avoid instantiating the object multiple times; If You only need to use one of the methods in other modules, so the R method is undoubtedly the most concise.

Related recommendations:

ThinkPHP implementation of updated data example detailed explanation (demo)

The above is the detailed content of ThinkPHP implements cross-module calling. For more information, please follow other related articles on the PHP Chinese website!

Related labels:
source:php.cn
Statement of this Website
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn
Popular Tutorials
More>
Latest Downloads
More>
Web Effects
Website Source Code
Website Materials
Front End Template