Sortie le 24 octobre 2019
La version officielle de ThinkPHP 6.0, dont la construction a pris plus d'un an, est officiellement publiée. Cette version est basée sur les deux principes de rationalisation. Utilisation de base et unifiée. Sur la base de 5.1, l'architecture sous-jacente a été encore optimisée et améliorée, et elle a été plus standardisée.
En raison de l'introduction de certaines nouvelles fonctionnalités, l'environnement d'exploitation ThinkPHP6.0 nécessite PHP7.1+ (PHP7.3+ est recommandé) et ne prend pas en charge les mises à niveau transparentes vers 5.1 (des conseils de mise à niveau officiels sont fournis).
Tutoriel vidéo recommandé : "Démarrage rapide de ThinkPHP6.0"
Fonctionnalités principales :
● Adopter le typage fort PHP7 ( Mode strict)
● Prise en charge de plus de spécifications PSR
● Prise en charge multi-applications
● Indépendance des composants ORM
● Mécanisme middleware amélioré
● Servitisation de l'architecture de base
● Tout nouveau système d'événements
● Amélioration de la fonction du conteneur
● Indépendant des composants du moteur de modèle
● Fonctions internes Middleware
● Amélioration du mécanisme de SESSION
● Prise en charge du cache et des journaux multicanal
● Introduction du composant Filesystem
● Prise en charge améliorée de Swoole et de la coroutine
● Plus convivial pour l'IDE
● Unifier et rationaliser un grand nombre d'utilisations
Tactage fort et mode strict
Dans les frameworks grand public , ThinkPHP6 .0 est le premier à adopter le mode strict de PHP7. Tous les fichiers principaux ont des contraintes de type de mode strict activées, donc si un type de variable ne correspond pas, une exception sera levée, ce qui est utile pour standardiser les types de variables dans le code et détecter les problèmes potentiels à l'avance.
Mode multi-application
La nouvelle version du framework fournit la prise en charge du mode multi-application. L'installation par défaut est une seule application. Il vous suffit d'installer une multi-application. Extension du mode application pour faciliter le déploiement de plusieurs applications sans installer de composants dépendants à plusieurs reprises. Chaque application prend en charge l'accès au portail indépendant et la liaison de nom de domaine. Vous pouvez également utiliser un fichier de portail pour implémenter un déploiement multi-application automatique. Et le mode multi-application automatique prend en charge l'identification intelligente et passera automatiquement au mode application unique pour la correspondance lors de l'accès à des applications inexistantes. Il prend également en charge les mécanismes de mappage des applications et d’interdiction d’accès.
La conception du mode multi-application peut rendre le développement plus modulaire, car la configuration, le routage et les vues de chaque application peuvent être inclus dans le répertoire d'application, il est donc plus pratique de modulariser les applications, et même d'introduire Composer candidatures.
Conteneurs et services
La nouvelle version des conteneurs prend en charge la spécification PSR-11. Les fonctionnalités fonctionnelles de la classe conteneur incluent principalement :
Quantity. Liaison de classes et d'objets Instances et interfaces aux conteneurs
● Créer des instances de classes (obtenir les directement si elles existent)
● Alias de liaison d'objet conteneur
● Prise en charge des objets conteneur ( instanciation) rappels
● Récupérer l'instance d'objet conteneur
● Supprimer l'instance d'objet dans le conteneur
● Fournir une injection de dépendances et une prise en charge de l'implémentation de façade
● Appeler la méthode de l'instance (ou de la fermeture) de l'objet conteneur
● Fournit la prise en charge d'ArrayAccess pour les objets conteneurs
Système d'événements
La nouvelle version du Le système d'événements peut être considéré comme le système comportemental de la version 5.1. Une version améliorée, le système d'événements est plus puissant que le système comportemental dans la mesure où l'événement lui-même peut être une classe et peut mieux prendre en charge les abonnés à l'événement. Prend en charge l'abonnement intelligent aux événements et utilise un mécanisme de réflexion pour identifier les événements auxquels les abonnés actuels souhaitent s'abonner.
L'avantage des événements par rapport au middleware est que les événements sont positionnés avec plus de précision (ou plus granulaires) que le middleware, et sont plus adaptés à l'expansion de certains scénarios métier. Par exemple, nous rencontrons généralement des utilisateurs qui doivent effectuer une série d'opérations après leur inscription ou leur connexion. Grâce au système d'événements, nous pouvons terminer l'expansion des opérations de connexion sans envahir le code d'origine, ce qui non seulement réduit le couplage du système, mais réduit également la possibilité de BUG.
La prise en charge du middleware est améliorée
Le middleware est divisé en middleware global, middleware d'application, middleware de routage et middleware de contrôleur. Ces quatre middlewares sont complètement regroupés et s'exécutent indépendamment, mais le middleware est intégré. le même groupe ne sera pas exécuté à plusieurs reprises. La méthode middleware effectue une injection de dépendances et un mécanisme de rappel pour l'achèvement de la demande.
De nombreuses fonctions de base sont réalisées sur la base d'un middleware, y compris le mode multi-application, qui est également exécuté à l'aide du mécanisme middleware.
Routage et requêtes
La nouvelle version du routage rationalise de nombreuses fonctions inutiles, la définition du routage est plus standardisée et sémantique, et le fichier de définition du routage prend en charge l'inclusion dans l'application répertoire Facilite le développement modulaire. La fonction d'annotation de routage est indépendante de la bibliothèque think-annotation, et son utilisation est plus standardisée et prend en charge les invites IDE.
La nouvelle version de l'objet de requête est plus facile à développer. Le système fournit une classe appRequest après l'installation par défaut. Vous pouvez directement personnaliser l'objet de requête dans l'application et ajouter les attributs et méthodes nécessaires. Mais cela n’affectera pas l’injection de dépendances et les appels de façade à thinkRequest.
Services système
Étant donné que le framework principal adopte une conception orientée services, vous pouvez enregistrer les services requis dans votre extension ou application. Enregistrez un objet dans le service système du conteneur ou effectuez une injection de dépendance associée sur certains objets. En raison de la priorité d'exécution des services système, il peut être garanti que les composants concernés ont effectué l'injection de dépendances appropriée lors de l'exécution. Une classe de service comprend généralement des méthodes d'enregistrement et de démarrage pour une exécution à différentes étapes.
Composantisation ORM
La fonction ORM intégrée est complètement indépendante en tant que composant think-orm et peut être utilisée indépendamment. ThinkPHP6.0 s'appuie sur ce composant pour. être installé par défaut, donc conserver l'utilisation. Tout en restant inchangée, la fonction de requête a été améliorée.
Composantation du moteur de modèles
Le noyau n'a plus de moteur de modèles intégré et ne fournit que la prise en charge des modèles PHP. Le moteur de modèles officiel est indépendant comme le pense-. moteur de modèle de modèle et Dépend de l'installation par défaut. Vous pouvez utiliser plus facilement des moteurs de modèles tiers.
Système de journalisation
Le journal prend en charge plusieurs canaux et unifie les formats de ligne de commande et de journal WEB, notamment :
● Le journal ajoute plusieurs -prise en charge des canaux, plusieurs canaux peuvent être écrits simultanément ou commutés
● Les formats de journalisation WEB et CLI sont unifiés et prennent en charge le formatage des journaux
● Améliorations du format de journal JSON
● Prise en charge des événements d'écriture de journaux
Amélioration du mécanisme de session
Le mécanisme de session de la version 6.0 a été complètement réécrit et n'utilise plus le mécanisme de session intégré de PHP, un nouveau Le mécanisme de session de mise en œuvre peut mieux prendre en charge Swoole/Workerman et d'autres environnements.
Ainsi, la série de fonctions session_*** intégrée à PHP n'est plus prise en charge, ni l'utilisation de $_SESSION pour lire les données de session. Vous devez opérer via la classe ou la façade Session fournie par le framework et la requête. la classe est également encapsulée. Lecture des données de session.
La session prend en charge les mécanismes de lecture inter-applications et de sérialisation personnalisée. Par défaut, le type de fichier est utilisé pour enregistrer les données de session. En raison du mécanisme de cache partagé, vous pouvez également utiliser n'importe quel type de cache pris en charge pour enregistrer les données de session.
Présentation du composant Filesystem
La nouvelle version ajoute la bibliothèque de classes Filesystem pour renforcer la prise en charge du système de fichiers et peut facilement prendre en charge divers stockages cloud, notamment Alibaba Cloud et Sept Niu Yun.
Améliorations de l'extension Swoole
L'extension Swoole prend en charge les services HTTP et Socket, prend en charge les fonctions de pool de connexions de base de données et de cache, ainsi que les fonctions RPC.
Mise à jour de l'outil de débogage
L'outil de débogage de trace de page intégré d'origine a été remplacé par une extension et l'extension think-trace a été installée si l'application. est installé via composer, l'extension topthink/think-trace est installée par défaut.
L'utilisation de base reste la même qu'avant, mais aucune configuration supplémentaire n'est requise. Par défaut, il est affiché en mode html. Il prend toujours en charge l'affichage de la console du navigateur et n'est valable qu'en mode débogage.
En même temps, une extension de débogage think-debugbar basée sur debugbar est ajoutée, qui doit être installée séparément avant de pouvoir être utilisée.
composer require topthink/think-debugbar
Unifier et rationaliser un grand nombre d'usages
La nouvelle version a rationalisé et unifié de nombreux usages pour éviter la confusion de spécifications incohérentes lors du processus de développement.
Manuel de développement
Pour plus d'informations, vous pouvez consulter le "Manuel de développement complet TP6"
Holding a Avec son intention originale et sa persévérance, ThinkPHP a toujours insisté sur l'amélioration et la mise à jour, et a continuellement publié plusieurs versions majeures au cours des 13 dernières années. En fait, toutes les versions majeures de ThinkPHP de l'histoire ont fourni un support et une maintenance pendant plus de 18 mois. L'annonce actuelle du plan de maintenance pour les versions majeures de ThinkPHP est la suivante :
. Adresse GitHub ThinkPHP6.0 :
https://github.com/top-think/think?tdsourcetag=s_pctim_aiomsg
https://github .com/top-think/framework?tdsourcetag=s_pctim_aiomsg