Heim > Artikel > PHP-Framework > Was ist der Unterschied zwischen thinkphp3 und 5?
3.X alte Ideen, die aufgegeben werden müssen
URL-Änderungen
Zunächst möchte ich mich für die falsche Anleitung entschuldigen, dass die Laxheit von 3. Streng genommen wird die „get“-Methode verwendet, um „id“ zu erhalten , eine solche URL gehört nicht zu $_GET. Sie kann jetzt über „param“ abgerufen werden. Die spezifische Verwendung kann über den Anforderungsteil abgefragt werden.
Modelländerungen
Die neue Version der Modellabfrage gibt das Standardobjekt „object“ zurück und das System fügt standardmäßig die Methode „toArray“ hinzu. Viele Entwickler verwenden „all“. ' oder 'select' 'Versuchen Sie, 'toArray' zu verwenden, um in ein Array zu konvertieren. Ich hoffe, Entwickler können das Konzept von 'object' verstehen, versuchen, 'object' zur Verwendung von Daten zu verwenden, oder die 'db'-Methode zum Betreiben verwenden Datenbank und erinnern Sie auch an diesen Teil. Für Entwickler, die „toArray“ missbrauchen, ist das Ergebnis von „all“ oder „select“ eine Array-Sammlung von Objekten, die nicht mit „toArray“ konvertiert werden kann.
Verwandte Empfehlungen: „ThinkPHP Tutorial“
Neue Versionsänderungen
Benennung Konvention
·Verzeichnis- und Dateinamen verwenden „Kleinbuchstaben + Unterstrich“ und beginnen mit einem Kleinbuchstaben
·Klassenbibliotheken, Funktionen Dateien werden einheitlich mit dem Suffix .php versehen.
·Die Dateinamen der Klassen sind alle in Namespaces definiert, und der Pfad des Namespace stimmt mit dem Pfad der Klassenbibliotheksdatei überein ( einschließlich Groß- und Kleinschreibung);
·Der Klassenname und der Klassendateiname sollten einheitlich sein und die Benennung in Kamelbuchstaben einheitlich verwenden (der erste Buchstabe wird groß geschrieben)
Funktion
·Das System verlässt sich nicht mehr auf irgendwelche Funktionen, sondern stellt nur noch Hilfsfunktionen für häufig verwendete Operationspakete bereit
·Einzelbuchstabe-Funktionen werden aufgegeben und das System lädt standardmäßig Hilfsfunktionen, insbesondere siehe vorheriges Kapitel „Hilfsfunktionen“
Routing
5.0 Der URL-Zugriff unterstützt nicht mehr den normalen URL-Modus und das Routing unterstützt keine regulären Routendefinitionen, sondern alle Änderungen an der Methode des Regelroutings und der variablen Regeln (reguläre Definition), die hier nicht näher beschrieben wird.
Controller
Der Namespace des Controllers wurde angepasst und es besteht keine Notwendigkeit, eine Controller-Klasse zu erben.
·Der Namespace der Anwendungsklassenbibliothek ist als App (änderbar) anstelle des Modulnamens vereinheitlicht.
·Der Klassenname von Der Controller ist Standard. Ohne das Controller-Suffix können Sie den Parameter „controller_suffix“ konfigurieren, um das Controller-Klassensuffix zu aktivieren 🎜>
·Abschaffung der ursprünglichen Methoden vor und nach der Operation
Versionsvergleich
3.2-Versions-Controller-Schreibmethode<?php namespace Home\Controller; use Think\Controller; class IndexController extends Controller { public function hello() { echo 'hello,thinkphp!'; } }5.0-Versionskontrolle Geräteschreiben
namespace app\index\controller; class Index { public function index() { return 'hello,thinkphp!'; } }3.2-Version-Controller-Benennung
IndexController.class.php5.0-Version-Controller-Benennung
Index.php
**Korrekte Ausgabevorlage im Controller **
5.0 gibt die Vorlage im Controller aus. Die Verwendungsmethode ist wie folgt:Wenn Sie thinkController erben, können Sie Folgendes verwenden:
return $this->fetch('index/hello');Wenn Sie Controller erbt thinkController nicht, verwenden Sie:
return view('index/hello');
Modell
Wenn Sie die Verbesserungen mit der alten Version vergleichen müssen, ist das Modell in drei Teile unterteilt: Datenbank, Modell und Validator, die der M-Methode bzw. dem Modell und der automatischen Überprüfung entsprechen, die alle gleichzeitig verbessert wurden.Datenbank
Die Datenbankabfragefunktion von 5.0 wurde verbessert. Die Kettenabfrage, die ursprünglich über das Modell verwendet werden musste, kann direkt über die Db-Klasse aufgerufen werden. und der ursprüngliche M-Funktionsaufruf kann geändert werden, zum Beispiel:Version 3.2
M('User')->where(['name'=>'thinkphp'])->find();Version 5.0
db('User')->where('name','thinkphp')->find();
Modell
Die neue Version der Modellabfrage fügt statische Methoden hinzu, zum Beispiel:User::get(1); User::all(); User::where('id','>',10)->find();Der Modellteil hat viele Funktionen erweitert, Einzelheiten finden Sie im „Modellkapitel“.
Automatische Verifizierung
Im Vergleich zur alten Version kann es als die vorherige automatische Verifizierung verstanden werden und unterscheidet sich von der vorherigen VerifizierungThinkPHP5. 0-Verifizierung wird zur Verifizierung verwendet, die nicht nur auf das Modell anwendbar ist, sondern auch direkt im Controller aufgerufen werden kann. Spezifische Nutzungsregeln finden Sie im Kapitel „Verifizierung“, was nicht der Fall ist hier beschrieben werden.
Konfigurationsdatei
Die neue Version weist viele Konfigurationsparameter bzw. Konfigurationsebenen auf, die sich von der vorherigen Version unterscheiden. Es wird empfohlen, dass Sie sich den Code entweder ansehen oder sorgfältig durchlesen Wenn Sie das offizielle Entwicklungshandbuch lesen, verschwenden Sie nicht Ihren ganzen Tag mit Konfigurationsproblemen.Ausnahmen
5.0 hat keine Fehlertoleranz. Standardmäßig werden Ausnahmen für jede Fehlerstufe ausgelöst, und die Ausnahmeseite wurde neu gestaltet, um detaillierte Fehler anzuzeigen . Informationen zur Erleichterung des Debuggens.Verzicht auf Systemkonstanten
Im Vergleich zu früheren Versionen wurden in Version 5.0 zahlreiche Systemänderungen verworfen, wenn Benutzer sie selbst definieren können, wenn sie entsprechende Anforderungen haben下面是废除常量
REQUEST_METHOD IS_GET IS_POST IS_PUT IS_DELETE IS_AJAX __EXT__ COMMON_MODULE MODULE_NAME CONTROLLER_NAME ACTION_NAME APP_NAMESPACE APP_DEBUG MODULE_PATH等
部分常量可以在Request里面进行获取,具体参考“请求章节”。
注:再次说明本章节仅仅为之前使用3.X版本开发者快速理解5.0所写,具体5.0的功能还需要开发者通读手册。
助手函数
5.0 助手函数和 3.2 版本的单字母函数对比如下:
1、过去的单字母函数已完全被替换掉,如下:
S=>cache,C=>config,M/D=>model,U=>url,I=>input,E=>exception,L=>lang,A=>controller,R=>action
2、模版渲染:
$this->display() => return view()/return $this->fetch();
3、在model中调用自身model:
$this => Db::table($this->table)
4、在新建控制器与模型时的命名:
①控制器去掉后缀controller:UserController => User
②模型去掉后缀model:UserModel => User
5、url访问:
如果控制器名使用驼峰法,访问时需要将各字母之间用下划线链接后进行访问。
eg:控制器名为AddUser,访问是用add_user来进行访问
6、在TP5中支持配置二级参数(即二维数组),配置文件中,二级配置参数读取:
①Config::get('user.type');
②config('user.type');
7、模板中支持三元运算符的运算:{$info.status ? $info.msg : $info.error}还支持这种写法:{$varname.aa ?? 'xxx'}或{$varname.aa ?: 'xxx'}
8、TP5内置标签:
系统内置的标签中,volist、switch、if、elseif、else、foreach、compare(包括所有的比较标签)、(not)present、(not)empty、(not)defined等。
9、TP5数据验证:
$validate = new Validate(['name' => 'require|max:25','email' => 'email']); $data = ['name' => 'thinkphp','email' => 'thinkphp@qq.com']; if(!validate->check($data)){ debug::dump($validate->getError()); }
注:使用助手函数实例化验证器——$validate = validate('User');
10、TP5实现了内置分页,使用如下:
查询状态为1的用户数据,且每页显示10条数据
$list = model('User')->where('status',1)->paginate(10); $page = $this->render(); $this->assign('_list',$list); $this->assign('_page',$page); return $this->fetch();
模板文件中分页输出代码如下:
<div>{$_page}</div>
Das obige ist der detaillierte Inhalt vonWas ist der Unterschied zwischen thinkphp3 und 5?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!