Maison  >  Article  >  développement back-end  >  À propos de la différence entre la version ThinkPHP5.0 et la version ThinkPHP3.2

À propos de la différence entre la version ThinkPHP5.0 et la version ThinkPHP3.2

不言
不言original
2018-06-08 15:08:331673parcourir

Cet article présente principalement la différence entre la version ThinkPHP 5.0 et la version ThinkPHP 3.2. Il a une certaine valeur de référence. Maintenant, je le partage avec vous. Les amis dans le besoin peuvent s'y référer

Version 5.0 et versions antérieures. sont assez différents. Cet article présente certaines des principales différences de la version 5.0 pour les utilisateurs familiers avec la version 3.2.

URL et routage

L'accès URL 5.0 ne prend plus en charge le mode URL ordinaire, et le routage ne prend pas en charge les définitions d'itinéraire régulières, mais tous les changements Comment pour faire correspondre les règles variables (définitions régulières) pour le routage des règles :

Les principales améliorations sont les suivantes :

Ajouter des règles variables de routage ; >Ajouter la prise en charge des variables de combinaison ;
Ajouter le routage des ressources ;
Ajouter le regroupement de routes
Ajouter la prise en charge de la définition de fermeture
Ajouter la définition de routage MISS ;

Objet de requête et objet de réponse

5.0 a ajouté l'objet de requête Request et l'objet de réponse Response Request gère les requêtes et obtient les informations de demande de manière unifiée. L'objet Response est responsable de la sortie du client. Le client ou le navigateur répond.

Modules et contrôleurs

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 l'application est unifié en tant qu'application (définissable) 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 use_controller_suffix pour activer la classe du contrôleur. suffixe;

Contrôle La méthode d'opération du contrôleur utilise la méthode de retour pour renvoyer des données au lieu d'une sortie directe ;

Supprimer les méthodes pré- et post-opération d'origine
Ajouter l'attribut beforeActionList pour définir les pré-opérations ; 🎜> Prise en charge de la définition et de l'accès du contrôleur à n'importe quel niveau ;
L'accès URL prend en charge le positionnement automatique du contrôleur



Base de données

La base de données ; La fonction de requête de 5.0 a été améliorée et la chaîne qui devait initialement être utilisée via le modèle a été améliorée. La requête peut être appelée directement via la classe Db. L'appel de fonction M d'origine peut être modifié en fonction db, par exemple. :

Version 3.2

M('Utilisateur')->où(['name'=>'thinkphp']) ->find();


Version 5.0

db('Utilisateur')->where('nom' ,'thinkphp')->find();

Les principales améliorations sont les suivantes :

Prise en charge des opérations de requêtes chaînées La requête de données prend en charge le renvoi d'objets, de tableaux et d'objets PDOStatement ; Les requêtes d'ensemble de données prennent en charge le renvoi de tableaux et d'objets de collection ; Ajouter un constructeur de requête, les modifications de syntaxe de requête ;

prend en charge la requête de fermeture ; 🎜> prend en charge la requête d'affichage ;

ajoute des événements d'écoute SQL



Modèle


Le changement de modèle dans la version 5.0 est le plus important. le modèle est un concept entièrement orienté objet, y compris les modèles associés. Le suffixe de la classe model ne porte plus Model et se distingue directement par l'espace de noms d'origine. L'appel de la fonction D est remplacé par la fonction model et le modèle correspondant. la classe doit être créée, par exemple :

version 3.2

D('User') ->where(['name'= >'thinkphp'])->find();

Version 5.0


model('Utilisateur')- >where('name','thinkphp')->find();

Les principales améliorations incluent :

Reconstruire l'association model;

Supporter le modèle d'agrégation; Abolir le modèle de vue (changer la méthode de requête de vue de la base de données); L'extension du modèle adopte le mécanisme Trait; Ajouter l'écriture automatique des horodatages ; Ajouter la conversion des champs de type ;

Prise en charge de l'accès au tableau

Prise en charge de la sérialisation JSON ;



Vérification automatique et achèvement automatique



La vérification automatique des données et l'achèvement automatique de la version 5.0 sont assez différents de la version 3.2. La vérification des données de la version 5.0 utilise la définition du validateur et la vérification unifiée via la classe thinkValidate. La complétion automatique est réalisée en définissant des modificateurs dans le modèle.

Exceptions

5.0 a une tolérance zéro pour les erreurs et lèvera des exceptions pour tout niveau d'erreur par défaut (mais peut être utilisé dans l'application publique fichiers Définissez le niveau d'erreur dans), et la page d'exception a été repensée pour afficher des informations détaillées sur les erreurs pour un débogage facile.

Débogage et journalisation

L'amélioration de Page Trace dans la version 5.0 prend en charge la console du navigateur pour afficher les informations de trace.

Le pilote de journalisation de la version 5.0 ajoute le mode Socket et utilise SocketLog pour prendre en charge le débogage à distance. Constantes

La version 5.0 a abandonné la plupart des définitions de constantes d'origine, ne conservant que les définitions de constantes de chemin du framework et le reste des constantes peut être utilisé Utilisez les attributs ou méthodes pertinents de la classe App ou de la classe Request pour compléter ou redéfinir vous-même les constantes requises.

Les constantes obsolètes incluent :

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

Fonction

Le framework de base de la version 5.0 ne repose sur aucune fonction personnalisée, mais il encapsule toujours certaines fonctions courantes dans des fonctions d'assistance. Vous pouvez redéfinir ou ajouter des fonctions d'assistance à volonté. .

Ce qui précède représente l'intégralité du contenu de cet article. J'espère qu'il sera utile à l'étude de chacun. Pour plus de contenu connexe, veuillez faire attention au site Web PHP chinois !

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