In diesem Artikel werden die M-Methode und die R-Methode der ThinkPHP3-Funktionen ausführlich vorgestellt. Die M-Methode wird zum Instanziieren einer grundlegenden Modellklasse verwendet, während die R-Methode zum Aufrufen der Operationsmethode eines bestimmten Controllers verwendet wird Startseite Lassen Sie uns gemeinsam lernen. Ich hoffe, es wird für alle hilfreich sein.
Zunächst werde ich Ihnen die detaillierte Erklärung der ThinkPHP-Funktionen vorstellen: M-Methode
Die M-Methode wird verwendet, um eine grundlegende Modellklasse zu instanziieren D-Methode ist:
1. Die Modellklasse muss nicht angepasst werden, wodurch die E/A-Belastung reduziert wird und die Leistung verbessert wird.
2 Standard ist die Model-Klasse. Sie können beim Instanziieren das Tabellenpräfix, die Datenbank und die Datenbankverbindungsinformationen angeben Da die Basismodellklasse der neuen Version des ThinkPHP-Frameworks jedoch immer leistungsfähiger wird, wird die M-Methode immer praktischer als die D-Methode.
M-Methodenaufrufformat:
M('[Basismodellname:] Modellname', 'Datentabellenpräfix', 'Datenbankverbindungsinformationen')
1. Instanziieren Sie die Basismodellklasse (Model)
Wenn kein Modell definiert ist, wenden wir uns an Sie Sie können die folgende Methode verwenden, um eine Modellklasse für den Betrieb zu instanziieren:Diese Methode ist die einfachste und effizienteste, da keine Modellklasse definiert werden muss und daher projektübergreifende Aufrufe unterstützt. Der Nachteil besteht auch darin, dass es keine benutzerdefinierte Modellklasse gibt, sodass die entsprechende Geschäftslogik nicht geschrieben werden kann und nur grundlegende CURD-Operationen ausgeführt werden können.
entspricht tatsächlich://实例化User模型 $User = M('User'); //执行其他的数据操作 $User->select();
$User = M('User');
$User = new Model('User');
Die Verwendung entspricht tatsächlich:
$User = M('CommonModel:User');
$User = new CommonModel('User');
bedeutet die Instanziierung der Model-Modellklasse und den Betrieb der think_user-Tabelle in der db2-Datenbank.
Wenn der zweite Parameter leer bleibt oder nicht übergeben wird, bedeutet dies, dass das Datentabellenpräfix in der aktuellen Projektkonfiguration verwendet wird. Wenn die betriebene Datentabelle kein Tabellenpräfix hat, können Sie Folgendes verwenden.$User = M('db2.User','think_');
bedeutet, die Model-Modellklasse zu instanziieren und die Benutzertabelle in der Datenbank db1 zu betreiben.
$User = M('db1.User',null);
Verwenden Sie Model, um die grundlegende Modellklasse darzustellen , und verwenden Sie dann Model für die think_user-Tabelle. Zum Betrieb verwenden Sie das user_a-Konto, um eine Verbindung zur Datenbank herzustellen. Die Betriebsdatenbank ist thinkphp.
$User = M('User','think_','mysql://user_a:1234@localhost:3306/thinkphp');
Wenn Sie beispielsweise Folgendes konfigurieren:
in der Projektkonfigurationsdatei, können Sie Folgendes verwenden:
'DB_CONFIG'=>'mysql://user_a:1234@localhost:3306/thinkphp';
$User = M('User','think_','DB_CONFIG');
$User = M('CommonModel:db2.User','think_');
M('UserLogic:User');
D('User','Logic');
R-Methodenaufrufformat:
R('[Project://][Group/]Module/Operation','Parameter','Controller-Layer-Name')Wenn wir beispielsweise eine Operationsmethode wie folgt definieren:
, dann kann diese Operationsmethode in anderen Controllern über R-Methoden aufgerufen werden (im Allgemeinen werden R-Methoden für modulübergreifende Aufrufe verwendet)
$data = R('User/detail',array('5'));
表示调用User控制器的detail方法(detail方法必须是public类型),返回值就是查询id为5的一个用户数据。如果你要调用的操作方法是没有任何参数的话,第二个参数则可以留空,直接使用:
$data = R('User/detail');
也可以支持跨分组和项目调用,例如:
R('Admin/User/detail',array('5'));
表示调用Admin分组下面的User控制器的detail方法。
R('Admin://User/detail',array('5'));
表示调用Admin项目下面的User控制器的detail方法。
官方的建议是不要在同一层多太多调用,会引起逻辑的混乱,被公共调用的部分应该封装成单独的接口,可以借助3.1的新特性多层控制器,单独添加一个控制器层用于接口调用,例如,我们增加一个Api控制器层,
class UserApi extends Action { public function detail($id){ return M('User')->find($id); } }
然后,使用R方法调用
$data = R('User/detail',array('5'),'Api');
也就是说,R方法的第三个参数支持指定调用的控制器层。
同时,R方法调用操作方法的时候可以支持操作后缀设置C('ACTION_SUFFIX'),如果你设置了操作方法后缀,仍然不需要更改R方法的调用方式。
相关推荐:
Das obige ist der detaillierte Inhalt vonDetaillierte Erläuterung der M-Methode und der R-Methode der TP3-Funktion. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!