Der Unterschied zwischen thinkphp3 und thinkphp5
Was ist der Unterschied zwischen thinkphp3 und thinkphp5? Lassen Sie mich Ihnen die Unterschiede zwischen den beiden vorstellen:
1. Die Nutzungsunterschiede zwischen thinkphp3.2 und thinkphp5
1 . Die bisherigen Einzelbuchstabenfunktionen wurden wie folgt vollständig ersetzt:
S=>cache,C=>config,M/D=>model,U=>url,I=>input,E=>exception,L=>lang,A=>controller,R=>action
2. Das eigene Modell im Modell aufrufen:
$this->display() => return view()/return $this->fetch();
4. Benennung beim Erstellen eines neuen Controllers und Modells:
① Entfernen Sie das Suffix-Controller vom Controller: UserController => User
② Entfernen Sie das Suffix-Modell vom Modell: UserModel => User
5. URL-Zugriff:
Wenn der Controller-Name Kamel-Groß-/Kleinschreibung verwendet, müssen Sie vor dem Zugriff jeden Buchstaben mit einem Unterstrich verknüpfen.
z. B.: Der Controller heißt AddUser und der Zugriff erfolgt über add_user
6. In TP5 wird die Konfiguration sekundärer Parameter (d. h. zweidimensionales Array) unterstützt Lesen des sekundären Konfigurationsparameters:
①Config::get('user.type');
②config('user.type');
7 Operationen von Metaoperatoren:
$this => Db::table($this->table)
Verwandte Empfehlungen: „
php-Video-TutorialIn den Tags in das System integriert, volist, switch, if, elseif, else, foreach, vergleichen (einschließlich aller Vergleichs-Tags), (nicht) vorhanden, (nicht) leer, (nicht) definiert usw.
9. TP5-Datenüberprüfung:
{$info.status ? $info.msg : $info.error}还支持这种写法:{$varname.aa ?? 'xxx'}或{$varname.aa ?: 'xxx'}
Hinweis: Verwenden Sie die Hilfsfunktion, um den Validator zu instanziieren – $validate = validate('User');
10. TP5 implementiert integriertes Paging, verwenden Sie es wie folgt :
Benutzerdaten mit Status 1 abfragen und 10 Daten pro Seite anzeigen
$validate = new Validate(['name' => 'require|max:25','email' => 'email']); $data = ['name' => 'thinkphp','email' => 'thinkphp@qq.com']; if(!validate->check($data)){ debug::dump($validate->getError()); }
Der Paging-Ausgabecode in der Vorlagendatei lautet wie folgt:
$list = model('User')->where('status',1)->paginate(10); $page = $this->render(); $this->assign('_list',$list); $this->assign('_page',$page); return $this->fetch();
Zweitens thinkphp3.2 und Thinkphp5-Datenbankoperationen vergleichen
Daten hinzufügenthinkhp3.2
<div>{$_page}</div>
thinkphp5
//添加单条数据$User = M('User'); $data['name'] = 'ThinkPHP'; $data['email'] = 'ThinkPHP@gmail.com'; $User->create($data); $User->add($data);//添加多条数据$dataList[] = array('name'=>'thinkphp','email'=>'thinkphp@gamil.com'); $dataList[] = array('name'=>'onethink','email'=>'onethink@gamil.com') $User->addAll($dataList);
thinkhp3.2
//添加单条数据$data = ['foo' => 'bar', 'bar' => 'foo']; Db::table('think_user')->insert($data);//添加多条数据$data = [ ['foo' => 'bar', 'bar' => 'foo'], ['foo' => 'bar1', 'bar' => 'foo1'], ['foo' => 'bar2', 'bar' => 'foo2'] ]; Db::name('user')->insertAll($data);
thinkhp5
$User = M("User"); // 实例化User对象// 要修改的数据对象属性赋值 $data['name'] = 'ThinkPHP';$data['email'] = 'ThinkPHP@gmail.com'; $User->where('id=5')->save($data); // 根据条件更新记录 where('id=5')->setField('name','ThinkPHP'); $data = array('name'=>'ThinkPHP','email'=>'ThinkPHP@gmail.com');// 更改用户的name值 $User-> where('id=5')->setField($data);更改用户的name和email的值 $User->where('id=5')->setDec('score',5); // 用户的积分减5 $User->where('id=5')->setInc('score',3); // 用户的积分加3
thinkhp3.2
Db::table('think_user')->update(['name' => 'thinkphp','id'=>1]);//更新数据表中的数据 Db::table('think_user') ->where('id',1) ->setField('name', 'thinkphp');//更新某个字段的值 Db::table('think_user')->where('id', 1)->setInc('score',5);// score 字段加 5 Db::table('think_user')->where('id', 1)->setDec('score', 5);// score 字段减 5 Db::table('think_user')->where('id', 1)->setInc('score', 1, 10);//支持延时更新
thinkphp5
$User->delete('1,2,5'); // 删除主键为1,2和5的用户数据 $User->where('status=0')->delete(); // 删除所有状态为0的用户数据
Drittens: Vergleich zwischen thinkphp5 und thinkphp3. Entwickler der .X-Version können sich schneller mit dieser neuen Version vertraut machen und loslegen. Gleichzeitig wird den Entwicklern auch dringend empfohlen, ihre alten Denkmuster aufzugeben, da es sich bei 5.0 um eine brandneue subversive und rekonstruierte Version handelt. Alte Ideen von 3. Wir entschuldigen uns für die falsche Anleitung. In Version 5.0 wurde die Methode ähnlich wie /id/1, die „id“ über „get“ erhalten kann, offiziell abgeschafft Eine URL gehört nicht zu $_GET. Jetzt kann sie über „param“ Get abgerufen werden.
ModelländerungenDie 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.
Neue Versionsänderungen
Namenskonvention
Verzeichnis- und Dateinamen verwenden Kleinbuchstaben + Unterstrich ' und beginnt mit einem Kleinbuchstaben; Klassenbibliotheks- und Funktionsdateien werden einheitlich mit dem Suffix .php versehen; Klassendateinamen werden in Namespaces definiert, und der Pfad des Namespace stimmt mit dem Pfad der Klassenbibliotheksdatei überein (einschließlich Groß- und Kleinschreibung). ); Klassennamen und Die Dateinamen sollten konsistent sein und die Benennung in Groß-/Kleinschreibung verwenden (der erste Buchstabe wird groß geschrieben)
FunktionDas System ist nicht mehr auf Funktionen angewiesen , bietet jedoch nur die Kapselung häufig verwendeter Vorgänge. Hilfsfunktionen sind veraltet und das System lädt die Hilfsfunktion standardmäßig.
Routing
5.0 Der URL-Zugriff unterstützt nicht mehr den normalen URL-Modus und das Routing unterstützt keine regulären Routendefinitionen, aber alle werden auf Regelrouting mit variablen Regeln (regulär) geändert (Definition) werden die spezifischen Details hier nicht wiederholt.
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 des Controllers hat standardmäßig nicht das Controller-Suffix. Sie können den Controller_suffix konfigurieren Klassensuffix; Controller-Operationsmethode Verwenden Sie die Rückgabemethode, um Daten anstelle der direkten Ausgabe zurückzugeben.
Versionsvergleich3.2 Schreibmethode des Versionscontrollers// 根据主键删除Db::table('think_user')->delete(1);
Db::table('think_user')->delete([1,2,3]);// 条件删除
Db::table('think_user')->where('id',1)->delete();
Db::table('think_user')->where('id','<',10)->delete();
<?php namespace Home\Controller; use Think\Controller; class IndexController extends Controller { public function hello() { echo 'hello,thinkphp!'; } }
Name des Version 3.2-Controllers
namespace app\index\controller; class Index { public function index() { return 'hello,thinkphp!'; } }
Name des Version 5.0-Controllers
IndexController.class.php
Korrekte Ausgabevorlage im Controller
5.0在控制器中输出模板,使用方法如下:
如果你继承think\Controller的话,可以使用:
return $this->fetch('index/hello');
如果你的控制器没有继承 think\Controller的话,使用:
return view('index/hello');
模型
如果非要对比与旧版本的改进,模型被分为数据库、模型、验证器三部分,分别对应M方法、模型、自动验证,同时均有所加强,下面做简单介绍。
数据库
5.0的数据库查询功能增强,原先需要通过模型才能使用的链式查询可以直接通过Db类调用,原来的M函数调用可以改用db函数,例如:
3.2版本
M('User')->where(['name'=>'thinkphp'])->find();
5.0版本
db('User')->where('name','thinkphp')->find();
模型
新版的模型查询增加了静态方法,例如:
User::get(1); User::all(); User::where('id','>',10)->find();
自动验证
对比旧的版本,可以理解为之前的自动验证且不同于之前的验证;
ThinkPHP5.0验证使用独立的\think\Validate类或者验证器进行验证,不仅适用于模型,在控制器也可直接调用。
配置文件
新版对配置很多的配置参数或者配置层次都和之前不同了,建议大家要么看看代码,要么仔细通读下官方的开发手册,不要因为配置的问题浪费自己一整天的时间。
异常
5.0对错误零容忍,默认情况下会对任何级别的错误抛出异常,并且重新设计了异常页面,展示了详尽的错误信息,便于调试。
系统常量的废弃
5.0版本相对于之前版本对系统变化进行了大量的废弃,用户如果有相关需求可以自行定义
下面是废除常量
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里面进行获取
助手函数
5.0助手函数和3.2版本的单字母函数对比如下:
Das obige ist der detaillierte Inhalt vonDer Unterschied zwischen thinkphp3 und thinkphp5. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Heiße KI -Werkzeuge

Undresser.AI Undress
KI-gestützte App zum Erstellen realistischer Aktfotos

AI Clothes Remover
Online-KI-Tool zum Entfernen von Kleidung aus Fotos.

Undress AI Tool
Ausziehbilder kostenlos

Clothoff.io
KI-Kleiderentferner

AI Hentai Generator
Erstellen Sie kostenlos Ai Hentai.

Heißer Artikel

Heiße Werkzeuge

Notepad++7.3.1
Einfach zu bedienender und kostenloser Code-Editor

SublimeText3 chinesische Version
Chinesische Version, sehr einfach zu bedienen

Senden Sie Studio 13.0.1
Leistungsstarke integrierte PHP-Entwicklungsumgebung

Dreamweaver CS6
Visuelle Webentwicklungstools

SublimeText3 Mac-Version
Codebearbeitungssoftware auf Gottesniveau (SublimeText3)

Heiße Themen



In der C -Sprache ist der Hauptunterschied zwischen char und wchar_t die Zeichencodierung: char verwendet ASCII oder erweitert ASCII, wchar_t Unicode; char nimmt 1-2 Bytes auf, wchar_t nimmt 2-4 Bytes auf; char ist für englischen Text geeignet. Wchar_t ist für mehrsprachige Text geeignet. char ist weithin unterstützt, wchar_t hängt davon ab, ob der Compiler und das Betriebssystem Unicode unterstützen. char ist in der Charakterbereich begrenzt, WCHAR_T hat einen größeren Charakterbereich und spezielle Funktionen werden für arithmetische Operationen verwendet.

Der Unterschied zwischen Multithreading und Asynchron besteht darin, dass Multithreading gleichzeitig mehrere Threads ausführt, während asynchron Operationen ausführt, ohne den aktuellen Thread zu blockieren. Multithreading wird für rechenintensive Aufgaben verwendet, während asynchron für die Benutzerinteraktion verwendet wird. Der Vorteil des Multi-Threading besteht darin, die Rechenleistung zu verbessern, während der Vorteil von Asynchron nicht darin besteht, UI-Threads zu blockieren. Die Auswahl von Multithreading oder Asynchron ist von der Art der Aufgabe abhängt: Berechnungsintensive Aufgaben verwenden Multithreading, Aufgaben, die mit externen Ressourcen interagieren und die UI-Reaktionsfähigkeit asynchron verwenden müssen.

Es gibt keine integrierte Summenfunktion in der C-Sprache, daher muss sie selbst geschrieben werden. Die Summe kann erreicht werden, indem das Array durchquert und Elemente akkumulieren: Schleifenversion: Die Summe wird für die Schleifen- und Arraylänge berechnet. Zeigerversion: Verwenden Sie Zeiger, um auf Array-Elemente zu verweisen, und eine effiziente Summierung wird durch Selbststillstandszeiger erzielt. Dynamisch Array -Array -Version zuweisen: Zuordnen Sie Arrays dynamisch und verwalten Sie selbst den Speicher selbst, um sicherzustellen, dass der zugewiesene Speicher befreit wird, um Speicherlecks zu verhindern.

C -Sprachfunktionen sind die Grundlage für die Code -Modularisierung und das Programmaufbau. Sie bestehen aus Deklarationen (Funktionsüberschriften) und Definitionen (Funktionskörper). C Sprache verwendet standardmäßig Werte, um Parameter zu übergeben, aber externe Variablen können auch mit dem Adresspass geändert werden. Funktionen können oder haben keinen Rückgabewert, und der Rückgabewerttyp muss mit der Deklaration übereinstimmen. Die Benennung von Funktionen sollte klar und leicht zu verstehen sein und mit Kamel oder Unterstrich die Nomenklatur. Befolgen Sie das Prinzip der einzelnen Verantwortung und behalten Sie die Funktion ein, um die Wartbarkeit und die Lesbarkeit zu verbessern.

Char und Unsigned char sind zwei Datentypen, die Charakterdaten speichern. Der Hauptunterschied ist der Weg, um mit negativen und positiven Zahlen umzugehen: Wertebereich: char signiert (-128 bis 127) und nicht signiertes char nicht signiert (0 bis 255). Negative Zahlenverarbeitung: char kann negative Zahlen speichern, unsigned char kann nicht. Bitmodus: char Das höchste Bit repräsentiert das Symbol, nicht signiertes char unsigned Bit. Arithmetische Operationen: SHOR und unsigned char sind signierte und nicht signierte Typen, und ihre arithmetischen Operationen sind unterschiedlich. Kompatibilität: SHAR und nicht signiertes Zeichen

H5. Der Hauptunterschied zwischen Mini -Programmen und App ist: Technische Architektur: H5 basiert auf Web -Technologie, und Mini -Programme und Apps sind unabhängige Anwendungen. Erfahrung und Funktionen: H5 ist leicht und einfach zu bedienen, mit begrenzten Funktionen; Mini -Programme sind leicht und haben eine gute Interaktivität. Apps sind leistungsstark und haben reibungslose Erfahrung. Kompatibilität: H5 ist plattformübergreifend, Applets und Apps werden von der Plattform eingeschränkt. Entwicklungskosten: H5 verfügt über niedrige Entwicklungskosten, mittlere Mini -Programme und die höchste App. Anwendbare Szenarien: H5 eignet sich für Informationsanzeigen, Applets eignen sich für leichte Anwendungen und Apps eignen sich für komplexe Funktionen.

Obwohl C und C# Ähnlichkeiten haben, sind sie völlig unterschiedlich: C ist eine prozessorientierte, manuelle Speicherverwaltung und plattformabhängige Sprache, die für die Systemprogrammierung verwendet wird. C# ist eine objektorientierte, Müllsammlung und plattformunabhängige Sprache, die für Desktop-, Webanwendungs- und Spielentwicklung verwendet wird.

PDF mit Passwort geschützt in Photoshop exportieren: Öffnen Sie die Bilddatei. Klicken Sie auf "Datei" & gt; "Export" & gt; "Exportieren Sie als PDF". Stellen Sie die Option "Sicherheit" fest und geben Sie dasselbe Passwort zweimal ein. Klicken Sie auf "Exportieren", um eine PDF -Datei zu generieren.
