Dieser Artikel stellt hauptsächlich die M-Methode und die R-Methode zur detaillierten Erklärung der ThinkPHP-Funktionen vor. Jetzt kann ich ihn mit Ihnen teilen
Zunächst werde ich Ihnen die detaillierte Erklärung der ThinkPHP-Funktionen vorstellen: Die M-Methode wird zum Instanziieren einer grundlegenden Modellklasse verwendet. Der Unterschied zur D-Methode ist:
1. Es ist keine benutzerdefinierte Modellklasse erforderlich, wodurch die E/A-Belastung reduziert wird und die Leistung gut ist.2. Nach der Instanziierung können nur Methoden in der Basismodellklasse aufgerufen werden ;
3. Sie können beim Instanziieren das Tabellenpräfix, die Datenbank und die Datenbankverbindungsinformationen angeben ist, aber mit der neuen Version der Basismodellklasse des ThinkPHP-Frameworks werden die Funktionen immer leistungsfähiger und die M-Methode ist 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 kann die folgende Methode verwenden, um eine Modellklasse für den Betrieb zu instanziieren://实例化User模型 $User = M('User'); //执行其他的数据操作 $User->select();
$User = M('User');
$User = new Model('User');
2. Andere öffentliche Modellklassen instanziieren
Die erste Möglichkeit zur Instanziierung besteht darin, dass es keine Definition der Modellklasse gibt, sodass es schwierig ist, zusätzliche Logik zu kapseln Methoden, aber in den meisten Fällen müssen Sie möglicherweise nur eine allgemeine Logik erweitern, dann können Sie die folgende Methode ausprobieren.$User = M('CommonModel:User');
$User = new CommonModel('User');
3. Eingehendes Tabellenpräfix, Datenbank und andere Informationen
Der erste Parameter ist der Modellname (kann die Basismodellklasse enthalten). Datenbank), der zweite Parameter wird verwendet, um das Präfix der Datentabelle festzulegen (leer lassen, um das Tabellenpräfix der aktuellen Projektkonfiguration zu übernehmen), und der dritte Parameter wird verwendet, um die aktuell verwendeten Datenbankverbindungsinformationen festzulegen (leer lassen). Nehmen Sie die Datenbankverbindung der aktuellen Projektkonfigurationsinformationen), zum Beispiel:$User = M('db2.User','think_');
$User = M('db1.User',null);
$User = M('User','think_','mysql://user_a:1234@localhost:3306/thinkphp');
'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');
erreicht die gleiche Funktion.
Ausführliche Erläuterung der ThinkPHP-Funktionen: R-MethodeDie R-Methode wird verwendet, um die Betriebsmethode eines bestimmten Controllers aufzurufen, was eine weitere Verbesserung und Ergänzung des darstellt Eine Methode. Informationen zur Verwendung von Methode A finden Sie hier.
R-Methodenaufrufformat: R('[Project://][Group/]Module/Operation','Parameter','Controller-Layer-Name')
Zum Beispiel definieren wir eine Operationsmethode als:
class UserAction extends Action { public function detail($id){ return M('User')->find($id); } }
那么就可以通过R方法在其他控制器里面调用这个操作方法(一般R方法用于跨模块调用)
$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方法的调用方式。
以上内容给大家分享了ThinkPHP函数详解之M方法和R方法,希望对大家有所帮助。
相关推荐:
Das obige ist der detaillierte Inhalt vonDetaillierte Erläuterung der ThinkPHP-Funktionen: M-Methode und R-Methode. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!