Comment construire votre propre paquet Laravel - Chapitre 1

source de l'image: http://culttt.com

Bonjour les codeurs, trouvez-vous généralement des bibliothèques de Laravel dans Packagist? Par exemple, voulez-vous exporter vos données au format Excel, vous pouvez les rechercher dans un packagiste et trouver ce paquet incroyable que vous pourrez utiliser.

Étonnamment, nous pouvons construire notre propre paquet / bibliothèque Laravel et le publier sur github ou même sur packagist afin que votre paquet puisse être découvert par d'autres. Je vais couvrir cela dans plusieurs chapitres et dans ce premier chapitre, nous allons créer notre paquetage Laravel simple.

Nous allons construire un paquet simple formateur de devises. Le paquet formatera un nombre en nombre formaté avec une devise donnée. Cela semble un long chemin pour le construire, donc dans ce chapitre, je couvrirai les fonctionnalités de base du fournisseur de services, de la route, du contrôleur et de la vue pour construire un paquet.

Installez Laravel

Dans cette série, nous utiliserons Laravel 5.5 pour développer un package, assurez-vous donc que votre serveur est conforme aux exigences.

Il suffit de suivre les instructions d’installation.

Créer un répertoire de paquets

Nous savons que nos packages installés résident dans le répertoire du fournisseur et sont ignorés par défaut. De plus, nous ne sommes pas censés modifier le code directement à partir du répertoire du fournisseur.

Créons donc un dossier à partir du répertoire racine de laravel avec cette structure:

app / packages / nom du fournisseur / nom du package / src

Maintenant, notre dossier peut ressembler à ceci:

structure du dossier formateur de devises

packages: Dossier pour placer les vendeurs de nos packages.

teknomuslim: nom du vendeur
currencyformatter: nom du paquet
src: Dossier pour placer les codes de nos paquets.

Comme vous pouvez le constater, vous pouvez modifier le nom du dossier en fonction de vos besoins.

Initiation du compositeur

Nous devons lancer notre package à l'aide de composer afin que votre package puisse être installé ultérieurement dans votre Laravel en tant que fournisseur. Ne vous inquiétez pas, composer est capable de générer un fichier composer.json avec une commande intégrée.

À l’aide de terminal, accédez à notre dossier de noms de paquets. Dans ce chapitre, vous trouverez paquets / teknomuslim / currencyformatter, puis exécutez la commande suivante:

compositeur init

Suivez les instructions du compositeur. Si vous ne savez pas comment répondre, appuyez simplement sur Entrée pour utiliser la réponse par défaut. Vous pouvez le changer plus tard directement en votre composer.json généré.

Maintenant, nous avons notre composer.json

{
    "name": "teknomuslim / currency-formter",
    "description": "simple formateur de numéro de devise",
    "auteurs": [
        {
            "nom": "Didik Tri Susanto",
            "email": "[email protected]"
        }
    ],
    "stabilité minimale": "dev",
    "nécessite": {}
}

Excellent, nous sommes maintenant prêts à coder!

Définir le fournisseur de service

Avant de définir fournisseur de service, nous devons charger notre package. Notre paquet est une implémentation du chargeur automatique PSR-4, nous devons donc définir notre espace de noms de paquet dans laravel’s composer.json

Dans la section autoload, configurez psr-4 pour notre package.

"autoload": {
    "classmap": [
        "base de données / semences",
        "base de données / usines"
    ],
    "psr-4": {
        "App \\": "app /",
        "Teknomuslim \\ CurrencyFormatter \\": "packages / teknomuslim / currencyformatter / src"
    }
},

Ensuite, nous devons charger automatiquement notre paquet en utilisant la commande composer comme suit:

composer dump-autoload

Génial, notre paquet est déjà chargé automatiquement dans Laravel. Faisons un fournisseur de services pour notre forfait. Créez simplement une classe CurrencyFormatterServiceProvider.php dans le dossier src. N'oubliez pas d'utiliser un espace de noms basé sur le fournisseur que nous avons créé auparavant.

Oui, c'est un fournisseur de service vide. Nous coderons cela plus tard pour ajouter plus de fonctionnalités. La méthode boot () est utilisée pour démarrer une fonctionnalité de package telle que des itinéraires, des écouteurs d'événement ou d'autres fonctionnalités. La méthode register () est utilisée pour lier des classes ou des fonctionnalités au conteneur d'applications.

Ensuite, nous devons ajouter le fournisseur de services de paquetage à config / app.php dans le tableau des fournisseurs.

/ *
 * Fournisseurs de services de colis ...
 * /
Teknomuslim \ CurrencyFormatter \ CurrencyFormatterServiceProvider :: class,

Définir un itinéraire, des contrôleurs et des vues

Oui, nous avons un paquet maintenant! Malheureusement, nous n'avons pas encore de fonctionnalités. Ok, commençons par créer un fichier routes.php dans notre paquetage afin que nous puissions y accéder via notre navigateur.

Ensuite, nous devons charger notre route dans la méthode boot () dans le fournisseur de services que nous avons créé auparavant.

fonction publique boot ()
{
    $ this-> loadRoutesFrom (__ DIR __. '/ routes.php');
}

Maintenant, lancez votre laravel en utilisant

php artisan servir

et naviguez votre navigateur jusqu'à http: // localhost: 8000 / greeting. Vous devriez voir «Bonjour, ceci est votre paquet génial!» En sortie.

sortie de route de paquet

IMHO, Placer notre code directement dans le fichier route n'est pas une pratique recommandée. Puisque nous souhaitons moduler et séparer les problèmes, nous pourrions créer un fichier de contrôleur pour définir la logique de nos fonctionnalités.

Créez simplement un fichier de contrôleur dans le dossier src, ou vous pouvez créer un dossier Contrôleurs puis y placer des fichiers de contrôleur. Nous allons maintenant créer CurrencyFormatterController.php, puis créer une fonction greeting () pour afficher la sortie comme nous l’avons déjà écrit.

Ensuite, enregistrez notre contrôleur dans le fournisseur de services de paquets.

/ **
 * Enregistrez les services de l'application.
 *
 * @return void
 * /
registre de fonction publique ()
{
    $ this-> app-> make ('Teknomuslim \ CurrencyFormatter \ Controllers \ CurrencyFormatterController');
}

Modifier notre route pour utiliser le contrôleur à la place de la fonction de fermeture.

Route :: get ('greeting', 'Teknomuslim \ CurrencyFormatter \ Controllers \ CurrencyFormatterController @ greeting');

Accédez à nouveau à votre navigateur et nous devrions voir le même résultat qu'auparavant.

Que diriez-vous de la vue? Pouvons-nous utiliser un modèle de lame au lieu de renvoyer une chaîne? Oui, un paquet peut charger des vues. Pour ce faire, créons un dossier de vues dans le dossier src puis chargez-le dans la méthode boot ().

/ **
 * Bootstrap les services d'application.
 *
 * @return void
 * /
fonction publique boot ()
{
    $ this-> loadRoutesFrom (__ DIR __. '/ routes.php');
    $ this-> loadViewsFrom (__ DIR __. '/ views', 'CurrencyFormatter');
}

Le deuxième argument de la méthode loadViewsFrom () est un espace de noms pour votre vue. Cela est nécessaire car nous devons différencier les vues des autres packages.

Ensuite, créez le fichier greeting.blade.php pour refaire notre sortie de message d'accueil. Maintenant, essayez d'utiliser une phrase de bienvenue différente.




     Teknomuslim </ title>
</ head>
<body>
<h1 style = "text-align: center">
    <span style = "font-weight: normal"> Ceci est un package de formateur de devises </ span>
</ h1>
</ body>
</ html></pre><p>Presque terminé, appelez maintenant view dans la méthode greeting () du contrôleur.</p><pre>/ **
 * @return \ Illuminate \ Contracts \ View \ Usine | \ Illuminate \ View \ View
 * /
fonction publique salutation ()
{
    retournez la vue ('CurrencyFormatter :: greeting');
}</pre><p>Accédez au navigateur et actualisez-le.</p><img alt="bien une page html de notre point de vue" src="https://imgstore.nyc3.cdn.digitaloceanspaces.com/ceadesc/1571885994956.png" /><h4>Montrez votre forfait génial!</h4><p>Nous avons déjà construit notre propre paquet. Maintenant, montrez notre travail génial dans github afin que les autres programmeurs puissent apprendre ou utiliser notre paquet selon leurs besoins. Il y a plusieurs bonnes raisons pour lesquelles nous devons apprendre du code des autres personnes.</p><p>Il suffit de pousser le dossier src dans le référentiel github. N'oubliez pas de créer .gitignore car nous ne voulons pas valider un fichier / dossier commun tel que .idea / vendor, etc.</p><p>Voici les progrès de mon paquet Laravel pour cette série.</p><h4>Sommaire</h4><p>Nous avons donc construit un package laravel simple et appris à utiliser les itinéraires, les contrôleurs et les vues dans notre package. Dans la prochaine série, nous couvrirons plus de fonctionnalités et les publierons également dans packagist.</p><p>Merci de votre lecture, j'espère que cette série vous aidera à découvrir une autre partie impressionnante du cadre de Laravel.</p><p>Références:</p><ul><li>https://laravel.com/docs/5.5/packages</li><li>https://devdojo.com/blog/tutorials/how-to-create-a-laravel-package</li></ul><p>Bon codage, les gens!</p></div><div class="neighbor-articles"><h4 class="ui header">Voir également</h4><a href="/question/how-to-hack-pandora/" title="comment pirater pandora">comment pirater pandora</a><a href="/question/how-to-use-humility-in-a-sentence/" title="comment utiliser l'humilité dans une phrase">comment utiliser l'humilité dans une phrase</a><a href="/question/how-to-delete-os-from-hard-drive/" title="comment supprimer le système d'exploitation du disque dur">comment supprimer le système d'exploitation du disque dur</a><a href="/question/how-to-turn-c-into-watts/" title="comment transformer c en watts">comment transformer c en watts</a><a href="/question/how-to-attract-dust-particles/" title="comment attirer les particules de poussière">comment attirer les particules de poussière</a><a href="/question/how-to-turn-off-auto-format-in-google-docs/" title="comment désactiver le format automatique dans Google Docs">comment désactiver le format automatique dans Google Docs</a><a href="/question/how-to-get-into-ucla-as-a-transfer/" title="comment entrer dans ucla en tant que transfert">comment entrer dans ucla en tant que transfert</a><a href="/question/how-to-make-a-creepy-doll/" title="comment faire une poupée effrayante">comment faire une poupée effrayante</a></div></div><div class="article-sidebar"><div class="neighbor-articles"><h4 class="ui header">Voir également</h4><a href="/article/how-to-get-out-of-the-rejection-downward-spiral-in-your-tech-job-search-c4c737/" title="Comment sortir de la spirale descendante du rejet dans votre recherche d'emploi en technologie">Comment sortir de la spirale descendante du rejet dans votre recherche d'emploi en technologie</a><a href="/article/how-to-grow-your-writing-with-a-mentor-7898b2/" title="Comment développer votre écriture avec un mentor">Comment développer votre écriture avec un mentor</a><a href="/article/how-to-implement-a-pwa-and-barba-js-into-internet-kiosks-aa4a2e/" title="Comment implémenter un PWA et Barba.js dans des kiosques Internet">Comment implémenter un PWA et Barba.js dans des kiosques Internet</a><a href="/article/how-to-make-a-super-fast-static-site-with-gatsby-typescript-and-sass-3fd72b/" title="Comment créer un site statique ultra-rapide avec Gatsby, Typescript et SASS">Comment créer un site statique ultra-rapide avec Gatsby, Typescript et SASS</a><a href="/article/how-to-fight-poverty-an-interview-with-meike-van-ginneken-ceo-of-snv-b92e91/" title="Comment lutter contre la pauvreté: interview de Meike van Ginneken, PDG de SNV">Comment lutter contre la pauvreté: interview de Meike van Ginneken, PDG de SNV</a><a href="/article/how-to-onboard-yourself-to-a-dao-af527e/" title="Comment vous embarquer chez un DAO">Comment vous embarquer chez un DAO</a><a href="/article/how-to-participate-in-gooreo-sales-b2ed4e/" title="COMMENT PARTICIPER AUX VENTES DE GOOREO">COMMENT PARTICIPER AUX VENTES DE GOOREO</a><a href="/article/frank-harris-how-to-create-clarity-from-ambiguity-3da78b/" title="Frank Harris: Comment créer de la clarté à partir de l'ambiguïté">Frank Harris: Comment créer de la clarté à partir de l'ambiguïté</a></div></div></div></main><div class="push"></div></div><footer><div class="flags-footer"><a href="https://uz.internautasporlapaz.org/article/how-to-build-your-own-laravel-package-chapter-1-79d79b/"><i class="uz flag"></i></a><a href="https://bg.internautasporlapaz.org/article/how-to-build-your-own-laravel-package-chapter-1-79d79b/"><i class="bg flag"></i></a><a href="https://et.internautasporlapaz.org/article/how-to-build-your-own-laravel-package-chapter-1-79d79b/"><i class="ee flag"></i></a><a href="https://lt.internautasporlapaz.org/article/how-to-build-your-own-laravel-package-chapter-1-79d79b/"><i class="lt flag"></i></a><a href="https://lv.internautasporlapaz.org/article/how-to-build-your-own-laravel-package-chapter-1-79d79b/"><i class="lv flag"></i></a><a href="https://sr.internautasporlapaz.org/article/how-to-build-your-own-laravel-package-chapter-1-79d79b/"><i class="rs flag"></i></a><a href="https://sl.internautasporlapaz.org/article/how-to-build-your-own-laravel-package-chapter-1-79d79b/"><i class="si flag"></i></a><a href="https://sk.internautasporlapaz.org/article/how-to-build-your-own-laravel-package-chapter-1-79d79b/"><i class="sk flag"></i></a><a href="https://uk.internautasporlapaz.org/article/how-to-build-your-own-laravel-package-chapter-1-79d79b/"><i class="ua flag"></i></a><a href="https://sq.internautasporlapaz.org/article/how-to-build-your-own-laravel-package-chapter-1-79d79b/"><i class="al flag"></i></a><a href="https://hy.internautasporlapaz.org/article/how-to-build-your-own-laravel-package-chapter-1-79d79b/"><i class="am flag"></i></a><a href="https://is.internautasporlapaz.org/article/how-to-build-your-own-laravel-package-chapter-1-79d79b/"><i class="is flag"></i></a><a href="https://az.internautasporlapaz.org/article/how-to-build-your-own-laravel-package-chapter-1-79d79b/"><i class="az flag"></i></a><a href="https://kk.internautasporlapaz.org/article/how-to-build-your-own-laravel-package-chapter-1-79d79b/"><i class="kz flag"></i></a><a href="https://fa.internautasporlapaz.org/article/how-to-build-your-own-laravel-package-chapter-1-79d79b/"><i class="ir flag"></i></a><a href="https://tg.internautasporlapaz.org/article/how-to-build-your-own-laravel-package-chapter-1-79d79b/"><i class="tj flag"></i></a><a href="https://ga.internautasporlapaz.org/article/how-to-build-your-own-laravel-package-chapter-1-79d79b/"><i class="ie flag"></i></a><a href="https://be.internautasporlapaz.org/article/how-to-build-your-own-laravel-package-chapter-1-79d79b/"><i class="by flag"></i></a><a href="https://ka.internautasporlapaz.org/article/how-to-build-your-own-laravel-package-chapter-1-79d79b/"><i class="ge flag"></i></a><a href="https://ky.internautasporlapaz.org/article/how-to-build-your-own-laravel-package-chapter-1-79d79b/"><i class="kg flag"></i></a><a href="https://lb.internautasporlapaz.org/article/how-to-build-your-own-laravel-package-chapter-1-79d79b/"><i class="lu flag"></i></a><a href="https://lo.internautasporlapaz.org/article/how-to-build-your-own-laravel-package-chapter-1-79d79b/"><i class="la flag"></i></a><a href="https://ar.internautasporlapaz.org/article/how-to-build-your-own-laravel-package-chapter-1-79d79b/"><i class="sa flag"></i></a><a href="https://bn.internautasporlapaz.org/article/how-to-build-your-own-laravel-package-chapter-1-79d79b/"><i class="in flag"></i></a><a href="https://ca.internautasporlapaz.org/article/how-to-build-your-own-laravel-package-chapter-1-79d79b/"><i class="es flag"></i></a><a href="https://zh.internautasporlapaz.org/article/how-to-build-your-own-laravel-package-chapter-1-79d79b/"><i class="cn flag"></i></a><a href="https://hr.internautasporlapaz.org/article/how-to-build-your-own-laravel-package-chapter-1-79d79b/"><i class="hr flag"></i></a><a href="https://cs.internautasporlapaz.org/article/how-to-build-your-own-laravel-package-chapter-1-79d79b/"><i class="cz flag"></i></a><a href="https://da.internautasporlapaz.org/article/how-to-build-your-own-laravel-package-chapter-1-79d79b/"><i class="dk flag"></i></a><a href="https://nl.internautasporlapaz.org/article/how-to-build-your-own-laravel-package-chapter-1-79d79b/"><i class="nl flag"></i></a><a href="https://tl.internautasporlapaz.org/article/how-to-build-your-own-laravel-package-chapter-1-79d79b/"><i class="ph flag"></i></a><a href="https://fi.internautasporlapaz.org/article/how-to-build-your-own-laravel-package-chapter-1-79d79b/"><i class="fi flag"></i></a><a href="https://de.internautasporlapaz.org/article/how-to-build-your-own-laravel-package-chapter-1-79d79b/"><i class="de flag"></i></a><a href="https://el.internautasporlapaz.org/article/how-to-build-your-own-laravel-package-chapter-1-79d79b/"><i class="gr flag"></i></a><a href="https://iw.internautasporlapaz.org/article/how-to-build-your-own-laravel-package-chapter-1-79d79b/"><i class="il flag"></i></a><a href="https://hi.internautasporlapaz.org/article/how-to-build-your-own-laravel-package-chapter-1-79d79b/"><i class="in flag"></i></a><a href="https://hu.internautasporlapaz.org/article/how-to-build-your-own-laravel-package-chapter-1-79d79b/"><i class="hu flag"></i></a><a href="https://id.internautasporlapaz.org/article/how-to-build-your-own-laravel-package-chapter-1-79d79b/"><i class="id flag"></i></a><a href="https://it.internautasporlapaz.org/article/how-to-build-your-own-laravel-package-chapter-1-79d79b/"><i class="it flag"></i></a><a href="https://ja.internautasporlapaz.org/article/how-to-build-your-own-laravel-package-chapter-1-79d79b/"><i class="jp flag"></i></a><a href="https://ko.internautasporlapaz.org/article/how-to-build-your-own-laravel-package-chapter-1-79d79b/"><i class="kr flag"></i></a><a href="https://ms.internautasporlapaz.org/article/how-to-build-your-own-laravel-package-chapter-1-79d79b/"><i class="my flag"></i></a><a href="https://mr.internautasporlapaz.org/article/how-to-build-your-own-laravel-package-chapter-1-79d79b/"><i class="io flag"></i></a><a href="https://no.internautasporlapaz.org/article/how-to-build-your-own-laravel-package-chapter-1-79d79b/"><i class="no flag"></i></a><a href="https://pl.internautasporlapaz.org/article/how-to-build-your-own-laravel-package-chapter-1-79d79b/"><i class="pl flag"></i></a><a href="https://pt.internautasporlapaz.org/article/how-to-build-your-own-laravel-package-chapter-1-79d79b/"><i class="pt flag"></i></a><a href="https://ro.internautasporlapaz.org/article/how-to-build-your-own-laravel-package-chapter-1-79d79b/"><i class="ro flag"></i></a><a href="https://ru.internautasporlapaz.org/article/how-to-build-your-own-laravel-package-chapter-1-79d79b/"><i class="ru flag"></i></a><a href="https://internautasporlapaz.org/article/how-to-build-your-own-laravel-package-chapter-1-79d79b/"><i class="es flag"></i></a><a href="https://sv.internautasporlapaz.org/article/how-to-build-your-own-laravel-package-chapter-1-79d79b/"><i class="ch flag"></i></a><a href="https://ta.internautasporlapaz.org/article/how-to-build-your-own-laravel-package-chapter-1-79d79b/"><i class="sg flag"></i></a><a href="https://te.internautasporlapaz.org/article/how-to-build-your-own-laravel-package-chapter-1-79d79b/"><i class="in flag"></i></a><a href="https://th.internautasporlapaz.org/article/how-to-build-your-own-laravel-package-chapter-1-79d79b/"><i class="th flag"></i></a><a href="https://tr.internautasporlapaz.org/article/how-to-build-your-own-laravel-package-chapter-1-79d79b/"><i class="tr flag"></i></a><a href="https://ur.internautasporlapaz.org/article/how-to-build-your-own-laravel-package-chapter-1-79d79b/"><i class="pk flag"></i></a><a href="https://vi.internautasporlapaz.org/article/how-to-build-your-own-laravel-package-chapter-1-79d79b/"><i class="vn flag"></i></a></div>internautasporlapaz.org<!-- --> © <!-- -->2021<!-- --> </footer></div></div></div></body></html><script data-cfasync="false" src="/cdn-cgi/scripts/5c5dd728/cloudflare-static/email-decode.min.js"></script>