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.
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 :
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.
Nous recherchons des composants PHP dans Packagist. Ce site Web est utilisé pour collecter les meilleurs composants PHP peuvent être trouvés dans Packagist.
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.
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.
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.
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. <🎜 sera généré dans le répertoire racine. >Fichier : composer.lock
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
, vous pouvez utiliser la commande composer.lock
. composer update
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';
, 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
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; } }
, une par line , et au moins l'un d'entre eux est un lien mort : urls.csv
: scan.php
php scan.php urls.csv
, et l'autre est le chemin d'accès au fichier CSV. Le résultat est le suivant : scan.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!