Maison  >  Article  >  cadre php  >  Analyse de l'architecture des applications dans le framework Laravel

Analyse de l'architecture des applications dans le framework Laravel

不言
不言original
2018-07-31 16:36:472670parcourir
Le framework Laravel est appelé un framework « full stack » car il gère tout, des services réseau à la gestion de bases de données en passant par la génération HTML. Un environnement de développement Web intégré verticalement peut offrir aux développeurs une meilleure expérience.

Un programmeur typique interagit avec Laravel via des outils de ligne de commande pour générer et gérer les environnements de projet Laravel. Laravel est livré avec un excellent outil de ligne de commande appelé Artisan que vous pouvez utiliser pour générer du code-cadre et un schéma de base de données. Artisan peut tout gérer, de la migration du schéma de base de données à la gestion des ressources et de la configuration.

Convention sur la configuration

L'une des fonctionnalités intéressantes de Laravel est qu'il impose des règles assez sérieuses sur la façon de créer des applications Web. . Étonnamment, ces restrictions facilitent grandement la création d’applications. Voyons pourquoi.

Laravel diffère des autres environnements de développement verticalement intégrés par sa forte préférence pour la convention plutôt que la configuration. Alors que certains frameworks Java, Python ou PHP nécessitent souvent beaucoup de configuration XML, Laravel ne nécessite quasiment aucune configuration au départ (peut-être juste quelques lignes en PHP). Cet évitement des fichiers de configuration le rend tout à fait unique et la structure de code reconnaissable est la même dans toutes les applications Laravel.

Une structure de projet pour les gouverner tous !

Ce n'est pas une surprise, tous les projets Laravel ont fondamentalement la même structure de répertoires - chaque fichier a sa place désignée. Grâce à ce résultat de répertoire convenu, les développeurs peuvent être assurés de travailler selon la « méthode Laravel ».

La figure 1.1 montre à quoi ressemble la structure du répertoire du projet Laravel :

Figure 1.1 Structure du répertoire du projet Laravel

Comme vous pouvez le voir dans de cette façon, Laravel ne contient que 4 dossiers, et il y a des sous-dossiers sous ces 4 dossiers. Est-ce stressant de voir des sous-dossiers aussi riches pour la première fois ? Je vais les présenter un par un. La plupart de nos travaux de développement seront effectués dans le dossier app/.

Ce qui suit est une introduction de base à chaque dossier et fichier :

顶级文件夹

作用

app

包含了站点的controllers(控制器),models(模型),views(视图)和assets(资源)。这些是网站运行的主要代码,你会将你大部分的时间花在这些上面。

bootstrap

用来存放系统启动时需要的文件,这些文件会被如index.php这样的文件调用。

public

这个文件夹是唯一外界可以看到的,是必须指向你web服务器的目录。它含有laravel框架核心的引导文件index.php,这个目录也可用来存放任何可以公开的静态资源,如css,Javascript,images等。

vendor

用来存放所有的第三方代码,在一个典型的Laravel应用程序,这包括Laravel源代码及其相关,并含有额外的预包装功能的插件。

Dossier de niveau supérieurFonction

app

Contient les contrôleurs (contrôleurs), les modèles (modèles), les vues (vues) et les actifs (ressources) du site. Ce sont les principaux éléments de code qui gèrent votre site Web et vous y consacrerez la plupart de votre temps.

bootstrap

Il est utilisé pour stocker les fichiers nécessaires au démarrage du système. Ces fichiers seront appelés par des fichiers tels que index.php.

public

Ce dossier est le seul visible du monde extérieur et doit pointer vers le répertoire de votre serveur web. Il contient le fichier de démarrage principal index.php du framework laravel. Ce répertoire peut également être utilisé pour stocker toutes les ressources statiques publiques, telles que CSS, Javascript, images, etc.

fournisseur

Utilisé pour stocker tout le code tiers, dans une application Laravel typique, cela inclut le code source de Laravel et ses éléments associés, et contient des plugins supplémentaires avec des plugins préemballés fonctionnalité.

Comme mentionné ci-dessus, /app est l'endroit où tout le plaisir se passe, examinons de plus près la structure de ce répertoire.

Figure 1.2 Afficher les informations détaillées du dossier /app :

Figure 1.2 Les informations détaillées du dossier app

Ce qui suit est une introduction détaillée :

Dossier de fichiers

Fonction

/app/config/

Configurer les règles d'exécution, la base de données, séance, etc. attendez. Contient un certain nombre de fichiers de configuration permettant de modifier divers aspects du framework. La plupart des options renvoyées dans les fichiers de configuration sont associées aux tableaux PHP.

/app/config/app.php

Divers paramètres au niveau de l'application, fuseau horaire, paramètres régionaux (locale), mode de débogage et clés de cryptage uniques.

/app/config/auth.php

Contrôler comment dans l'application Pour authentifier, c'est-à-dire le pilote d'authentification.

/app/config/cache.php

Si l'application utilise la mise en cache accélérer le temps de réponse, configurez cette fonctionnalité ici.

/app/config/compile.php

Vous pouvez en spécifier ici Extra classes pour inclure les fichiers compilés réclamés par la commande 'artisan optimise'. Il doit s'agir de classes incluses dans pratiquement toutes les demandes adressées à l'application.

/app/config/database.php

Contient les informations de configuration pertinentes de la base de données, c'est-à-dire le moteur de base de données par défaut et les informations de connexion.

/app/config/mail.php

est le moteur d'envoi d'e-mails. fichier de configuration, c'est-à-dire le serveur SMTP, De : en-tête

/app/config/session.php

Contrôlez la façon dont Laravel gère les sessions utilisateur, c'est-à-dire le pilote de session et la durée de vie de la session.

/app/config/view.php

Configuration diverse pour le système de templates .

/app/controllers

contient la logique de base et le modèle de données de la classe Controller qui interagit avec et charge les fichiers de vue de l'application.

/app/database/migrations/

contient certaines classes PHP qui permettent à Laravel Met à jour le schéma de la base de données actuelle tout en gardant toutes les versions de la base de données synchronisées. Les fichiers de migration sont générés à l'aide des outils Artisan.

/app/database/seeds/

Contient des informations qui permettent aux outils Artisan de utilisez le fichier PHP de données relationnelles pour remplir la table de base de données.

/app/lang/

Fichier PHP qui contient pour rendre l'application facile Tableau de chaînes localisées. Par défaut, le répertoire contient des lignes de langue pour la pagination et la validation de formulaire pour la langue anglaise.

/app/models/

Un modèle est une information (donnée) qui représente une application ) et quelques classes de règles pour manipuler les données. Dans la plupart des cas, chaque table de la base de données correspondra à un modèle de l'application. La majorité de la logique métier de l’application sera concentrée dans le modèle.

/app/start/

Contient l'intégration avec les outils Artisan et les outils mondiaux et locaux contexte Paramètres personnalisés associés.

/app/storage/

Ce répertoire stocke les fichiers temporaires pour les différents services de Laravel Fichiers, tels que session, cache, modèles de vue compilés. Ce répertoire doit être accessible en écriture sur le serveur Web. Ce répertoire est maintenu par Laravel et nous ne nous en soucions pas.

/app/tests/

Ce dossier vous offre une commodité L'emplacement est utilisé pour les tests unitaires. Si vous utilisez PHPUnit, vous pouvez utiliser l'outil Artisan pour exécuter tous vos tests en même temps.

/app/views/

Ce dossier contient des contrôleurs ou des routes Le modèle HTML utilisé. Veuillez noter que vous ne pouvez placer que des fichiers modèles dans ce dossier. Les autres fichiers de ressources statiques tels que les fichiers CSS, Javascript et images doivent être placés dans le dossier /public.

/app/routes.php

Il s'agit du fichier de routage de votre application, qui contient les règles de routage qui indiquent à Laravel comment connecter les requêtes entrantes aux fermetures, aux contrôleurs et aux actions gérées par la route. Le fichier contient également plusieurs déclarations d'événements, y compris celles des pages d'erreur, qui peuvent être utilisées pour définir des compositeurs de vues.

/app/filters.php

Ce fichier contient diverses applications et filtrage d'itinéraire méthodes utilisées pour modifier les résultats de votre candidature. Laravel dispose de filtres prédéfinis pour le contrôle d'accès et la protection XSS.

Réfléchissez beaucoup à la création et au nom des dossiers, et vous obtenez une application avec un bon système de fichiers.

Ce que vous obtenez ici : MVC

Model-View-Controller (MVC)

Passons au haut niveau de travail avec les applications Laravel Aperçu. Vous avez peut-être remarqué que la structure standard de l'application Laravel se compose d'un répertoire d'application app/, qui contient trois sous-répertoires : models/, vues/ et contrôleurs/. Cela révèle que Laravel suit le modèle architectural modèle-vue-contrôleur (MVC), qui force la séparation des entrées de « logique métier » pour afficher les relations logiques à partir de l'interface utilisateur graphique (GUI). Dans le cas des applications Web Laravel, la logique métier se compose généralement de modèles de données tels que les utilisateurs, les articles de blog, etc. L'interface graphique n'est qu'une page Web dans le navigateur. Le modèle de conception MVC est très populaire dans le domaine du développement Web.

Trois composants du pattern MVC :

  • Model (model)

  • View (view)

  • Contrôleur

 [Note] L'auteur original a présenté les trois composants de MVC en détail ici, mais je ne les présenterai pas ici en raison de l'espace.

Composants Laravel

Une application Laravel typique contient les composants MVC mentionnés ci-dessus, comme indiqué ci-dessous :

Analyse de larchitecture des applications dans le framework Laravel

Lors de l'interaction avec Laravel, le navigateur envoie une requête, le serveur Web reçoit la requête et la transmet au moteur de routage Laravel. Le routage Laravel reçoit la demande, puis redirige vers la méthode de classe de contrôleur appropriée en fonction du modèle d'URL de la route.

Ensuite, la classe contrôleur prend le relais. Dans certains cas, le contrôleur affichera immédiatement une vue, qui est un modèle converti en HTML et renvoyé au navigateur. Plus communément avec les sites Web dynamiques, le contrôleur interagit avec le modèle, qui est un objet PHP qui représente un élément de l'application (comme un utilisateur, un article de blog) et est responsable de la communication avec la base de données. Après avoir appelé le modèle, le contrôleur restitue la vue finale (HTML, CSS et images) et renvoie la page Web complète au navigateur de l'utilisateur.

Laravel promeut le concept selon lequel les modèles, les vues et les contrôleurs doivent rester relativement indépendants en stockant ces éléments dans des fichiers de code séparés dans différents répertoires. C'est là que la structure des répertoires Laravel entre en jeu.

Les modèles de conception comme MVC ont été créés pour faciliter la vie des développeurs. C'est là que Laravel est meilleur que PHP qui n'utilise aucun modèle. Si cette discussion est abstraite, ne vous inquiétez pas ! Lorsque vous commencerez à travailler avec Laravel, vous ne réaliserez même pas que vous travaillez dans un modèle de conception. Au bout d’un moment, cela deviendra naturel.

Modèle de données

Le modèle de données est le fondement de toute application. Il décrit la logique métier de l'application. Toute donnée est représentée par une table de base de données. Laravel propose quelques techniques pour simplifier l'accès à la base de données.

Laravel connecte le modèle de données de l'application à la table de la base de données en convertissant les lignes de la table de la base de données en objets PHP pouvant être facilement manipulés. Il vous permet également d'appliquer des règles métier, de décrire les relations entre les différents modèles de données de votre application, etc. Par exemple, la relation familiale d'une personne peut être décrite à l'aide de Laravel Eloquent OR/M comme suit :

class Person extends Eloquent
{
    public function mother()
    {
        return $this->belongsTo('Mother');
    }

    public function father()
    {
        return $this->belongsTo('Father');
    }

    public function spouse()
    {
        return $this->hasOne('Spouse');
    }

    public function sisters()
    {
        return $this->hasMany('Sister');
    }

    public function brothers()
    {
        return $this->hasMany('Brother');
    }
}

C'est tout pour cet article, et plus encore. Pour laravel contenu, veuillez prêter attention au tutoriel d'introduction au framework laravel.

Articles connexes recommandés :

Analyse de code du module Autoloader dans le framework Laravel

Cours connexes recommandés :

Les cinq derniers didacticiels vidéo Laravel recommandés en 2017

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