Maison >cadre php >PensezPHP >La différence entre thinkphp5 et 3

La différence entre thinkphp5 et 3

步履不停
步履不停original
2019-07-01 11:33:443666parcourir

La différence entre thinkphp5 et 3

Tout d'abord, permettez-moi de préciser que ce chapitre n'est pas un guide pour mettre à niveau d'anciens projets vers la version 5.0, mais est destiné aux développeurs utilisant la version 3.X pour se familiariser et démarrer. cette nouvelle version plus rapidement. Dans le même temps, il est également fortement recommandé aux développeurs d’abandonner leurs anciens schémas de pensée, car la 5.0 est une toute nouvelle version subversive et reconstruite.

3. Nous nous excusons pour les indications incorrectes selon lesquelles le laxisme de .Ceux qui n'appartiennent pas à $_GET peuvent désormais être obtenus via 'param'. L'utilisation spécifique peut être interrogée via le. demander une partie.

Modifications du modèle

La nouvelle version de la requête de modèle renvoie "l'objet" par défaut et le système ajoute la méthode "toArray" par défaut. " ou " select " " Essayez d'utiliser " toArray " pour convertir en tableau. J'espère que les développeurs pourront comprendre le concept " d'objet ", essayer d'utiliser " objet " pour utiliser des données ou utiliser la méthode " db " pour faire fonctionner le base de données, et vous rappelle également cette partie. Pour les développeurs qui abusent de « toArray », le résultat de « all » ou « select » est une collection de tableaux d'objets, qui ne peuvent pas être convertis à l'aide de « toArray ».

Nouvelles modifications de version

Convention de dénomination

Les noms de répertoires et de fichiers utilisent « minuscule + trait de soulignement ' , et commence par une lettre minuscule ; la bibliothèque de classes et les fichiers de fonctions sont uniformément suffixés par .php ; les noms de fichiers des classes sont définis dans les espaces de noms et le chemin de l'espace de noms est cohérent avec le chemin du fichier de bibliothèque de classes (y compris les majuscules). et minuscules); le nom de la classe et la classe. Les noms de fichiers doivent être cohérents et utiliser une dénomination en casse chameau (la première lettre est en majuscule)

Fonction

Le système ne repose plus sur aucune fonction, mais fournit uniquement l'encapsulation des opérations couramment utilisées. Fonction d'assistant ; la fonction à une seule lettre est abandonnée et le système charge la fonction d'assistant par défaut. Veuillez vous référer au chapitre précédent « Fonction d'assistant » pour plus de détails ; 🎜>

routage

L'accès URL 5.0 n'est plus pris en charge. Le mode URL ordinaire et le routage ne prennent pas en charge les définitions d'itinéraire régulières. Au lieu de cela, ils sont tous modifiés en routage de règles combiné avec des règles variables. (définitions régulières). Les détails ne seront pas décrits ici.

Contrôleur

L'espace de noms du contrôleur a été ajusté et il n'est pas nécessaire d'hériter d'une classe de contrôleur.

L'espace de noms de la bibliothèque de classes d'application est unifié en tant qu'application (modifiable) au lieu du nom du module ; le nom de classe du contrôleur n'a pas le suffixe Controller par défaut. Vous pouvez configurer le paramètre controller_suffix pour activer le contrôleur. suffixe de classe ; méthode de fonctionnement du contrôleur Utilisez la méthode de retour pour renvoyer des données au lieu de la sortie directe ; abolissez les méthodes de pré- et post-opération d'origine

Comparaison des versions

Méthode d'écriture du contrôleur de version 3.2

<?phpnamespace Home\Controller;use Think\Controller;class IndexController extends Controller 
{    public function hello()
   {        echo &#39;hello,thinkphp!&#39;;
   }
}
Méthode d'écriture du contrôleur de version 5.0
namespace app\index\controller;class Index 
{    public function index()
   {        return &#39;hello,thinkphp!&#39;;
   }
}

Nom du contrôleur de version 3.2

IndexController. class.php

Nom du contrôleur de version 5.0

Index.php

**Sortie correcte modèle dans le contrôleur**

Modèle de sortie 5.0 dans le contrôleur, l'utilisation est la suivante :

Si vous héritez de thinkController, vous pouvez utiliser :

return $this->fetch(&#39;index/hello&#39;);

Si votre contrôleur n'hérite pas Pour thinkController, utilisez :

return view(&#39;index/hello&#39;);

Modèle

Si vous devez comparer les améliorations avec l'ancienne version, le modèle est divisé en base de données, modèle et vérification. Les trois parties de l'outil correspondent respectivement à la méthode M, au modèle et à la vérification automatique. En même temps, elles ont été renforcées.

Base de données

La fonction de requête de base de données de 5.0 a été améliorée. La requête en chaîne qui devait à l'origine être utilisée via le modèle peut être appelée. directement via la classe Db. Il s'avère que l'appel de fonction M peut utiliser la fonction db à la place, par exemple :

version 3.2

M(&#39;User&#39;)->where([&#39;name&#39;=>&#39;thinkphp&#39;])->find();
version 5.0
db(&#39;User&#39;)->where(&#39;name&#39;,&#39;thinkphp&#39;)->find();

Modèle

La nouvelle version de model query ajoute des méthodes statiques, par exemple :

User::get(1); 
User::all();User::where(&#39;id&#39;,&#39;>&#39;,10)->find();

La partie modèle a amélioré de nombreuses fonctions, veuillez vous référer au " Chapitre Modèle" pour plus de détails.

Vérification automatique

Par rapport à l'ancienne version, elle peut être comprise comme la vérification automatique précédente et différente de la vérification précédente

La vérification ThinkPHP5.0 utilise une classe thinkValidate ou un validateur indépendant pour la vérification. Elle n'est pas seulement applicable aux modèles, mais peut également être appelée directement dans le contrôleur. Veuillez vous référer au chapitre « Vérification » pour les règles d'utilisation spécifiques. ne sera pas décrit ici.

Fichier de configuration

La nouvelle version comporte de nombreux paramètres de configuration ou niveaux de configuration qui sont différents de ceux d'avant. Il est recommandé de les consulter. le code ou Lisez attentivement le manuel de développement officiel et ne perdez pas une journée entière sur des problèmes de configuration.

Exception

5.0 a une tolérance zéro pour les erreurs. Par défaut, une exception sera levée pour tout niveau d'erreur. La page d'exception a été repensée pour afficher des informations détaillées sur les erreurs pour un débogage facile.

Abandon des constantes du système

Par rapport aux versions précédentes, la version 5.0 a procédé à un grand nombre d'abandons de modifications du système. par eux-mêmes s'ils ont des besoins pertinents. Définition

Ce qui suit est la constante abolie

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 etc.

Constantes peut être obtenu en demande, veuillez vous référer à « Demander un chapitre ».

Remarque : Encore une fois, ce chapitre est uniquement écrit pour les développeurs ayant déjà utilisé la version 3.X afin de comprendre rapidement la 5.0. Les fonctions spécifiques de la 5.0 nécessitent une lecture approfondie du manuel.

Fonction d'assistance

La comparaison entre la fonction d'assistance 5.0 et la fonction d'assistance à une seule lettre de la version 3.2 est la suivante :

Config C

Exception E

Débug G

L lang

T aboli

I input

N aboli

D modèle

M db

A contrôleur

R action

B abolir

U url

W widget

S cache

F Abolition

Pour plus d'articles techniques liés à ThinkPHP, veuillez visiter la colonne Tutoriel ThinkPHP pour apprendre!

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Article précédent:Thinkphp est-il open source ?Article suivant:Thinkphp est-il open source ?