Maison  >  Article  >  développement back-end  >  Une brève discussion sur les composants PHP, les frameworks et Composer

Une brève discussion sur les composants PHP, les frameworks et Composer

little bottle
little bottleavant
2019-04-23 09:18:383653parcourir

Cet article présente principalement les composants PHP, les frameworks et Composer. Il a une certaine valeur d'apprentissage et les amis intéressés peuvent en apprendre davantage.

Qu'est-ce qu'un composant ?

Un composant est un ensemble de codes packagés, une série de classes, d'interfaces et de traits associés qui sont utilisés pour nous aider à résoudre un problème spécifique dans les applications PHP. Par exemple, si votre application PHP doit envoyer et recevoir des requêtes HTTP, elle peut être implémentée à l'aide de composants prêts à l'emploi tels que guzzle/guzzle. Nous utilisons des composants non pas pour réimplémenter des fonctions déjà implémentées, mais pour consacrer plus de temps à atteindre les objectifs à long terme du projet.

Les excellents composants PHP ont les caractéristiques suivantes :

  • Fonction unique : se concentre sur la résolution d'un problème et utilise des interfaces simples pour encapsuler les fonctions
  • Petit : petit et exquis , contient uniquement le code minimum requis pour résoudre un problème
  • Coopération : les composants PHP peuvent bien coopérer les uns avec les autres et sont combinés pour mettre en œuvre de grands projets
  • Bons tests : il fournit lui-même des tests et il y a suffisamment de tests Couverture
  • Documentation complète : une documentation complète doit être fournie pour permettre aux développeurs d'installer, de comprendre et d'utiliser facilement

Composants vs Frameworks

Quand nous choisissons un framework, il faut beaucoup investir dans les outils de ce framework. Le framework fournit généralement beaucoup d'outils, mais lorsqu'il ne fournit pas un outil dont nous avons besoin, la douleur nous est transmise, et nous devons trouver et intégrer une bibliothèque PHP personnalisée. L'intégration de code tiers dans un framework peut être difficile car le code tiers et le framework peuvent ne pas utiliser les mêmes interfaces.

Lors du choix d'un framework, nous nous concentrons sur l'avenir du framework, mais qui peut garantir qu'un certain framework sera toujours le meilleur outil pour un certain travail ? Les grands projets qui existent depuis de nombreuses années doivent fonctionner correctement et faire des ajustements à tout moment. Si vous choisissez le mauvais framework PHP, vous ne pourrez peut-être pas le faire. Les anciens frameworks PHP peuvent être lents ou obsolètes en raison du manque de support communautaire. Ces anciens frameworks sont souvent écrits en utilisant du code procédural au lieu du code orienté objet moderne et de certaines des nouvelles fonctionnalités de PHP. cadre, il y a beaucoup de choses à considérer.

Heureusement, Laravel a bien fonctionné en termes de ces préoccupations, il peut donc se démarquer parmi de nombreux frameworks PHP. Dans un sens, Laravel est également un framework de développement basé sur des composants (le composant principal est sa propre bibliothèque Illuminate). , l'implémentation de la fonction repose fortement sur des composants tiers). Par rapport à Symfony, il est plus facile à démarrer, il est donc à la fois évolutif et facile à utiliser. Cependant, Laravel présente également certains inconvénients.Par exemple, les composants propres de Laravel ne peuvent pas être facilement découplés et utilisés en dehors du cadre Laravel (mais je pense que cette situation s'améliorera, par exemple, ses composants de base de données et de file d'attente peuvent être découplés). Dans l’ensemble, Laravel reste un excellent framework qui peut nous aider à créer rapidement des applications puissantes.

Alors devrions-nous utiliser des composants ou des frameworks ? La réponse est : utilisez le bon outil pour la bonne chose. Si vous pouvez mettre en œuvre rapidement de petits projets avec certains composants PHP, utilisez des composants. Si plusieurs membres de votre équipe travaillent sur de grands projets, vous pouvez bénéficier des directives et de la structure convenues fournies par. le framework. , puis utilisez un framework (si vous ne savez pas quel framework utiliser, alors choisissez Laravel, il ne vous décevra pas). L'utilisation d'un framework peut guider et accélérer le développement du projet.

Utilisation des composants

Packagist

Nous recherchons des composants PHP dans Packagist. Ce site Web est utilisé pour collecter les meilleurs composants PHP peuvent être trouvés dans Packagist.

Une brève discussion sur les composants PHP, les frameworks et Composer

Par exemple, si nous voulons utiliser un composant http pour envoyer et recevoir des messages HTTP, recherchez http dans le champ de recherche, et le premier résultat que nous obtenons est Guzzle, alors utilisez-le.

Composer

Packagist est une communauté pour trouver des composants PHP, et Composer est un outil pour installer des composants PHP. Composer est un gestionnaire de dépendances pour PHP. Il s'exécute sur la ligne de commande. Vous indiquez à Composer les composants dont vous avez besoin, et Composer téléchargera et chargera automatiquement ces composants dans votre projet.

Composer et Packagist travaillent en étroite collaboration. Si vous dites à Composer que vous souhaitez utiliser le composant guzzlehttp/guzzle, Composer obtiendra le composant guzzlehttp/guzzle de Packagist, trouvera l'adresse d'entrepôt de ce composant et déterminera quelle version. à utiliser, et également Découvrez les dépendances de ce composant, puis téléchargez le composant guzzlehttp/guzzle et ses dépendances dans votre projet.

De plus, Composer générera automatiquement des chargeurs automatiques conformes aux normes PSR pour tous les composants PHP du projet, éliminant ainsi efficacement la gestion des dépendances et le chargement automatique. Par conséquent, Composer est le plus important pour la communauté PHP. des choses comme des outils supplémentaires. Il n'est pas exagéré de penser aux jours pénibles où nous devions utiliser include, require et spl_autoload_register pour implémenter manuellement le chargement automatique.

Concernant l'installation et l'utilisation de Composer, je n'entrerai pas dans les détails ici Merci de vous référer au site chinois de Composer.

Exemple de projet

Ci-dessous, nous utilisons un exemple de projet pour montrer comment utiliser Composer et ses composants pour développer une application PHP. La fonction de cette application est d'analyser l'URL dans un fichier CSV pour trouver des liens morts. L'application Une requête HTTP sera envoyée à chaque URL. Si le code d'état HTTP renvoyé est supérieur ou égal à 400, le lien mort sera envoyé vers la sortie standard. Il s'agit d'une application en ligne de commande. Après le développement, nous exécuterons ce script, transmettrons le chemin du fichier csv et afficherons la liste des liens morts dans la sortie standard.

Installer des composants

Avant de commencer, examinons quelles tâches peuvent être résolues à l'aide de composants PHP existants : nous avons besoin d'un composant capable de traiter de manière itérative les données du fichier csv, et aussi ajoutez des données au fichier csv. Chaque URL envoie une requête HTTP, vous avez donc également besoin d'un composant capable d'envoyer des requêtes HTTP et de vérifier la réponse HTTP.

Après avoir parcouru Packagist, nous avons trouvé deux composants : guzzlehttp/guzzle et league/csv Le premier est utilisé pour traiter les messages HTTP, et le second est utilisé pour traiter les données CSV. Ensuite, nous exécutons la commande suivante au niveau supérieur du projet :

composer require guzzlehttp/guzzle
composer require league/csv

Composer installera les dépendances dans le répertoire vendor du répertoire racine, composer.json et. Fichier : composer.lock

Une brève discussion sur les composants PHP, les frameworks et Composer

Le fichier listera tous les composants PHP utilisés par le projet, ainsi que la version spécifique. numéros des composants. Cela verrouille en fait le projet et permet au projet d'utiliser uniquement des versions spécifiques des composants PHP. L'avantage est que composer téléchargera la version spécifique répertoriée dans ce fichier, quelle que soit la dernière version disponible dans Packagist. Vous devez mettre le fichier composer.lock dans le contrôle de version afin que les membres de l'équipe utilisent la même version de PHP que vous. , si les versions des composants PHP utilisées par le développement local et le serveur sont les mêmes, les bogues causés par les différentes versions des composants peuvent être minimisés. composer.lock

Si vous souhaitez vraiment télécharger la dernière version du composant et mettre à jour

, vous pouvez utiliser la commande composer.lock. composer update

Chargement automatique

Ensuite, nous écrivons le code de l'application, créons un fichier

dans le répertoire racine, puis utilisons scan.php en haut du fichier pour importer l'autochargeur créé par Composer : require

require 'vendor/autoload.php';
L'autoloader créé par Composer est en fait un fichier nommé

, qui est enregistré dans le répertoire autoload.php Lorsque Composer télécharge chaque composant PHP, il vérifiera le vendor de chacun. Component. pour déterminer comment charger le composant. Après avoir obtenu ces informations, Composer créera localement un chargeur automatique pour le composant qui est conforme à la norme PSR. De cette façon, nous pouvons instancier n'importe quel composant PHP du projet et ces composants seront automatiquement chargés à la demande. composer.json

Écrire du code

Ci-dessous, nous utilisons formellement les composants Guzzle et CSV pour écrire du

code : scan.php

//使用composer自动加载器
require 'vendor/autoload.php';

//实例Guzzle Http客户端
$client = new GuzzleHttp\Client();

//打开并迭代处理CSV
$csv = League\Csv\Reader::createFromPath($argv[1]);
foreach ($csv as $csvRow) {
    try {
        //发送HTTP GET请求
        $httpResponse = $client->get($csvRow[0]);

        //检查HTTP响应的状态码
        if($httpResponse->getStatusCode() >= 400) {
            throw new Exception();
        }
    } catch (Exception $e) {
            //把死链发给标准输出
            echo $csvRow[0] . PHP_EOL;
    }
}
Maintenant, nous ajoutons quelques URL dans

, une par line , et au moins l'un d'entre eux est un lien mort : urls.csv

Une brève discussion sur les composants PHP, les frameworks et Composer

Ensuite, ouvrez le terminal et exécutez le script

 : scan.php

php scan.php urls.csv
Nous passé en deux paramètres, le premier est le chemin d'accès au fichier script

, et l'autre est le chemin d'accès au fichier CSV. Le résultat est le suivant : scan.php

Une brève discussion sur les composants PHP, les frameworks et Composer

Tutoriel associé :

Tutoriel vidéo PHP

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