En tant que développeur PHP, vous pouvez être intéressé par des frameworks. Les cadres tentent de faciliter le processus de développement en simplifiant les pratiques courantes utilisées dans la majorité des projets Web en développement tels que les packages, les modules, les plug-ins et même les composants (CakePHP)..
Pendant le processus de développement, vous avez peut-être l’impression de réinventer la roue, par exemple lors de la création d’une application d’authentification ou de Captcha. Dans ce cas, vous devez créer un package qui simplifie et accélère et facilite le développement de votre application..
Il existe deux types de forfaits; certains sont un cadre indépendant (autonome) et les autres sont pour un cadre spécifique. Ce tutoriel couvrira exclusivement les packages Laravel.
Avant de créer un paquet, vous devez connaître les gestionnaires de paquets. PEAR est un gestionnaire de paquets PHP bien connu qui, bien que disponible, est rarement utilisé. Pourquoi? Cela vous a obligé à installer des packages sur l'ensemble du système, plutôt que projet par projet. Le compositeur est devenu le successeur de PEAR.
L'un des paramètres de la mise à l'échelle de la puissance du framework est la manière dont le développeur redistribue les packages de code utiles. Cela permet aux développeurs de résumer les applications dans plusieurs packages d'applications plus petites..
En effet, les packages constituent un excellent moyen de regrouper le code associé. Les packages sont très similaires aux "Composants". Il est important de noter que le code source de Laravel est un "paquet", ce que Taylor Otwell appelle le DEFAULT_BUNDLE
.
Un des grands avantages des packages Laravel est qu’ils permettent l’accès à toutes les fonctionnalités offertes par le framework à son application hôte, notamment le routage, les migrations, les tests, les vues et de nombreuses autres fonctionnalités utiles. Un autre avantage important d'un paquet est le principe DRY (Don't Repeat Yourself). En créant un package pour le code que vous utilisez fréquemment, vous économisez des ressources et améliorez les performances de votre application..
Maintenant introduisons quelques paquets Laravel utiles. Les paquets que j'ai utilisés incluent:
Vous pouvez trouver la capacité d’emballage dont vous avez besoin dans packalyst. Packalyst crée un registre de paquets simple et social pour Laravel.
Créez un package d'authentification simple pour Laravel 5.0. Pour ce faire, vous devez d’abord un composer.json
fichier pour votre nouveau paquet:
"name": "alireza / myauth", "description": "Comment créer votre paquet laravel 5", "licence": "MIT", "auteurs": ["name": "Alireza Rahmani khalili", "email ":" [email protected] "]," stabilité minimale ":" dev "," require ": " laravel / framework ":" ~ 5.0 "," autoload ": " psr-4 ": "Alireza \\ Authentication \\": "src /"
La classe de fournisseur de service est simplement le fichier qui configure tout correctement pour le package. Voici à quoi le fournisseur de services devrait ressembler à ce stade, en src / MyAuthServiceProvider.php
:
espace de noms Alireza \ Authentication; utilisez Illuminate \ Support \ ServiceProvider; class MyAuthServiceProvider s étend ServiceProvider / ** * Indique si le chargement du fournisseur est différé. * * @var bool * / protected $ defer = false; / ** * Bootstrap les événements de l'application. * * @return void * / public function boot () / ** * Enregistrez le fournisseur de services. * * @return void * / public function register () / ** * Obtenir les services fournis par le fournisseur. * * @return array * / public function fournit () return [];
Ajouter le fournisseur de services à config / app.php
:
'Alireza \ Authentication \ MyAuthServiceProvider :: class',
Maintenant, Laravel est au courant du paquet. Vous pouvez demander “alias” et pourquoi je ne l’ajoute pas à mon app.php
. Personnellement, j'ajoute un alias dans la méthode register de la classe de fournisseur de services au lieu de l'ajouter manuellement au fichier de configuration Laravel. Je vais répondre à cela plus tard. Maintenant, créez une classe PHP simple appelée MyAuth
dans src / MyAuth.php
:
espace de noms Alireza \ Authentication; utilisez Config, Request, Session, Hash; utilisez App \ User; Classe MyAuth public $ redirect_login = '/ utilisateurs / home'; public $ redirect_logout = '/ users / logout'; public $ login = '/ user / login'; données protégées; public function __construct () if (Request :: isMethod ('post')) // Récupère les entrées de publication $ this-> data = array ('username' => Input :: get ('username'), 'password' = > Input :: get ('mot de passe')); login de fonction publique ($ data = false) $ this-> data = $ data; if ($ this-> data &&! is_array ($ this-> data)) renvoie la redirection ($ this-> login) -> avec ('message', 'désolé aucun tableau pour vous connecter manuellement') -> send ( ) if ($ this-> data &&! Session :: has ('utilisateur')) $ resultat = Utilisateur :: Où (['email' => $ this-> data ['nomutilisateur']]) -> premier ( ) if ($ result && Hash :: check ($ this-> data ['mot de passe'], $ result-> mot de passe)) Session :: put ('user', $ result); renvoyer Redirect ($ this-> redirect_login) -> avec ('message', 'La connexion de bienvenue a réussi') -> send (); Session :: flush (); renvoyer la redirection ($ this-> login) -> avec ('message', 'Échec de la connexion, nom d'utilisateur ou mot de passe incorrect') -> send (); fonction publique logout () Session :: flush (); renvoyer la redirection ($ this-> login) -> avec ('message', 'déconnexion réussie') -> send ();
La classe d'authentification doit être liée au conteneur IoC de Laravel au fournisseur de services du package. Avant cela, créez une classe Facade qui autorisera l'utilisation de méthodes de classe sans avoir à créer une nouvelle instance, ainsi que d'autres avantages indiqués précédemment. Tout comme la classe MyAuth a créé le nouveau répertoire Les façades
Dans le répertoire Facades, créez une nouvelle classe PHP et nommez-la. src / MyAuthFacade.php
:
espace de noms Alireza \ Authentication; utilisez Illuminate \ Support \ Facades \ Facade; La classe MyAuthFacade s'étend à Facade , fonction statique protégée getFacadeAccessor () return 'MyAuth';
Après cela, il ne reste plus qu’à amorcer le paquet. Le mien ressemble à:
fonction publique register () $ this-> app ['MyAuth'] = $ this-> app-> share (function ($ app) retour new MyAuth;); $ this-> app-> booting (function () $ loader = \ Illuminate \ Foundation \ AliasLoader :: getInstance (); $ loader-> alias ('MyAuth', 'Alireza \ Authentication \ MyAuthFacade'););
Comme vous pouvez le constater, j'ai lié la classe Myauth au conteneur IoC. Maintenant, il est facile d’utiliser la classe MyAuth:
MyAuth :: login (['username' => '[email protected]', 'password' => 'test']);
Cela devrait générer le message, Bienvenue, connexion réussie.
Si vous le souhaitez, vous pouvez maintenant enregistrer votre paquet dans Packagist. Le paquet MyAuth est maintenant enregistré et peut facilement être inclus dans Laravel via la commande composer: compositeur besoin de "alireza / myauth"
.
Si vous recherchez un exemple de package Laravel populaire et mature, vous pouvez consulter TerranetAdmin pour Laravel..
Voici un bref aperçu de la création d’un paquet Laravel 5. Comme vous pouvez le constater, la création du package est simple et peut constituer un outil important pour simplifier et accélérer le processus de développement..