Maison  >  Article  >  cadre php  >  Explication détaillée de l'architecture de base du framework Laravel

Explication détaillée de l'architecture de base du framework Laravel

藏色散人
藏色散人avant
2021-02-22 13:39:044324parcourir
Ce qui suit est introduit par

Laravel La colonne tutoriel présentera l'architecture de base du framework Laravel, j'espère que cela sera utile aux amis dans le besoin !

Explication détaillée de l'architecture de base du framework Laravel

Les amis qui ont utilisé le framework laravel savent qu'en plus de fournir certaines fonctions de base (comme les contrôleurs, les vues, les modèles), il existe également des parties intermédiaires, façades, contrats, etc. Comment ces éléments sont-ils utilisés dans le framework laravel ? Laissez-moi vous parler en détail aujourd'hui.

Tout d'abord, vous devez comprendre le modèle architectural du framework laravel (

Design core, le framework laravel est développé à l'aide du modèle de développement de composants de service, et le framework laravel est composé de différents composants de service)

Plusieurs fournisseurs de services dans Laravel constituent des composants Laravel. Conception hiérarchique : placez les bibliothèques de classes avec les mêmes fonctions dans le même dossier.

Le framework Laravel comporte plusieurs classes qui constituent des services, et plusieurs services constituent des composants.
Classe -> Service -> ComposantLaravel utilise un modèle de développement basé sur des composants,
Plusieurs classes ->Composant, plusieurs classes forment des services, plusieurs services Composant constitutif .

Plusieurs composants fournissent différents services, puis plusieurs services constituent notre projet.

Cycle de vie de la demande Le processus approximatif est le suivant :

Explication détaillée de larchitecture de base du framework Laravel

Théoriquement, le cycle de vie comporte principalement ces étapes, mais parmi elles , La plupart des développeurs n'ont besoin de se concentrer que sur

le routage, le middleware, les contrôleurs, les fonctions de fermeture, le traitement logique et d'autres étapes Bien sûr, il y aura toujours des processus d'exécution plus détaillés à l'intérieur de chaque étape, ici, nous. n'étudie généralement pas le cadre ou ne transforme pas le cadre en profondeur, et mène rarement des recherches détaillées, mais l'étude de la couche inférieure reste un bon choix pour l'apprentissage.

Services signifie fournir ce dont vous avez besoin. Les services fournis dans Laravel incluent des services d'authentification, des services de base de données, des services de cache, des services de file d'attente, etc. Tous les services du framework laravel sont définis dans
app/config/app.php


Fournisseur de services Quelque chose qui peut vous fournir un ensemble de services est un fournisseur de services, comme indiqué ci-dessus dans laravel Le fournisseur de serveur réellement défini est affiché, tel que
, un fournisseur de services qui fournit des services d'authentification. IlluminateAuthAuthServiceProvider::class, un fournisseur de services qui fournit des services de mise en cache IlluminateCacheCacheServiceProvider::class

Avantages : Les développeurs peuvent économiser plus d'énergie pour gérer la logique du projet, et une certaine entente tacite peut être obtenue entre les différentes personnes chargées du développement. le plus important est que le projet réalise un découplage hiérarchique et que la logique métier dépend uniquement du service et ne dépend pas de la mise en œuvre sous-jacente du service. Après le découplage, nous pouvons mettre à niveau ou personnaliser l'implémentation sous-jacente du service à volonté, tant que la classe sous-jacente implémente le service

Résumé : En fait, le service est un résumé concept, serveur Le fournisseur est l'implémenteur concret qui complète ce concept abstrait

Conteneur de servicesMette tous les services dans une boîte pour stocker le conteneur de services. Le conteneur de services dans Laravel est situé à

vendor/laravel/frameworksrcilluminateContainerContainer.php.

qui est le conteneur de services du framework Laravel. Le Container.php

Contrat permet de planifier le format, les méthodes, les paramètres, etc. du prestataire, et régule certaines contraintes pour le prestataire. Par conséquent, tous les contrats du cadre sont des interfaces, afin que les prestataires de services puissent être standardisés.


FaçadeLa façade démontre une fois de plus l'excellence de Laravel en matière de conception. Elle rend Laravel plus flexible et plus facile à étendre. Son concept est :
1 Fournir aux développeurs. proxys statiques pour les services dans des conteneurs de services

2 Il complète la méthode d'accès au service Auparavant, pour utiliser un service, il fallait obtenir une instance du service puis appeler la méthode de service, mais en utilisant la façade, vous deviez obtenir une instance du service puis appeler la méthode de service, mais en utilisant la façade, vous deviez obtenir une instance du service puis appeler la méthode de service. peut directement Le service est appelé en tant qu'objet statique.

3 La plupart des alias de service dans config/app.php utilisent façade

4 L'utilisation de façade est risquée, et plus vous en utilisez, mieux c'est Ceci est indiqué dans le manuel A small. quantité d'introduction, mais les détails doivent encore être découverts pendant le développement


Schéma d'architecture globale du framework Laravel
Explication détaillée de larchitecture de base du framework Laravel

如上图所示:laravel框架是由多个服务组件构成的 -> 服务提供者(最下面的不同的服务组件)。
FoundationApplication 用来创建服务提供者,创建好之后保存在ContainerContainer 的服务容器里面,交由他管理,Application 要继承 Container
为了约定服务提供者提供的服务,我们定义一个规范,这就是契约

对于我们的用户(最上面的用户)想使用laravel框架,必须通过控制器来使用(上面的Controller),使用laravel框架主要是使用laravel里面的服务提供者(上面的 new 服务),这样就是最传统的开发模式,和服务器容器没有直接关系,如果laravel这样设计的话,基本上和其他框架一样,没有任何优势。所以一般不怎么做。

由于有契约,契约是服提供者的接口,所以我们也可以直接使用契约,new 服务旁边的黄色线。使用契约用注入的方式,这样使用的不好之处是如果一个方法里面使用多个契约的话,我们就得注入多个契约,这样代码看起来不优雅。


于是laravel里面就出现了门面,门面的出现方便我们优雅的调用服务器提供者的类。由于每个服务提供者的类太长了如:

IlluminateCookieCookieServiceProvider::class,IlluminateDatabaseDatabaseServiceProvider::class,

所以又引出了别名,使用别名之后 简化了我们调用的服务提供者的类。

事件:laravel里面的模型里面的事件,比如用户对数据库操作时做的一个监听。对整个项目运行进行监听,有监听的动作。类似tp5里面的钩子和行为。
中间件:做用户的请求做一定的过滤。

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:
Cet article est reproduit dans:. en cas de violation, veuillez contacter admin@php.cn Supprimer