Unlimited Plugins, WordPress themes, videos & courses! Unlimited asset downloads! From $16.50/m
Advertisement
  1. Code
  2. Laravel 5

Gestione dei pacchetti a Laravel

by
Difficulty:IntermediateLength:LongLanguages:

Italian (Italiano) translation by Loris Pizii (you can also view the original English article)

In questo articolo, andremo avanti ed esplorare la funzionalità di gestione dei pacchetti nel framework Laravel. Nel corso dell'articolo, andremo attraverso un esempio reale per dimostrare lo scopo dell'articolo.

La gestione dei pacchetti in Laravel è una funzionalità importante che consente di unire un pezzo di funzionalità in modo che possa essere distribuito facilmente. Inoltre, è sempre possibile pubblicare il tuo pacchetto in repository come Packagist e GitHub che consentono agli altri sviluppatori di beneficiare del tuo pacchetto.

Per dimostrare il concetto, costruiremo una pagina di esempio in Laravel che carica un'immagine nella cloud Amazon S3. Piuttosto che andare con il solito flusso, lo svilupperemo come un pacchetto in bundle che può essere distribuito e mantenuto facilmente.

Prima di andare avanti, suppongo che tu abbia familiarità con il framework Laravel già perché non entrerò nei dettagli dei concetti fondamentali di Laravel.

Inoltre, è necessario disporre di un account AWS valido e delle credenziali per accedere all'API Amazon per seguire insieme all'esempio riportato in questo articolo. Quindi, assicuratevi di impostare prima questo.

Con tutto a portata di mano, siamo pronti ad immergersi nello sviluppo attuale.

Impostazione dei file del pacchetto

Guardiamo rapidamente l'elenco dei file che implementeremo durante il corso di questo tutorial.

  • composer.json: dobbiamo aggiungere la mappatura di classe del nostro pacchetto nel file composer.json esistente nella directory principale del pacchetto.
  • config/app.php: Questo è il file esistente che useremo per aggiungere una voce del nostro fornitore di servizi personalizzato in modo da poter caricare le viste e le rotte usando quel file.
  • composer.json: Questo è il file composer.json specifico per il pacchetto che desideri distribuire il pacchetto con altri.
  • packages/envato/aws/src/Providers/AwsServiceProvider.php: Il solito fornitore di servizi Laravel che verrà utilizzato per caricare altri componenti del pacchetto.
  • Packages/Envato/AWS/src/Routes/Web.php: carica i percorsi personalizzati del nostro pacchetto.
  • packages/envato/aws/src/Controllers/AwsController.php: questo è il file di controller che gestisce la logica di applicazione del nostro pacchetto.
  • Packages/Envato/AWS/src/views/upload.Blade.php: il file di visualizzazione che gestisce la logica di rendering.

Non preoccuparti se non ha ancora molto senso, come si parlerà di tutto in dettaglio mentre lo attraversiamo.

Impostazione dei Prerequisiti

Come abbiamo discusso in precedenza, il nostro pacchetto implementa il caso di utilizzo del file di caricamento su Amazon S3 cloud. In questa sezione, passeremo i prerequisiti che devono essere impostati per eseguire correttamente il nostro pacchetto.

Come sviluppatore di Laravel, devi conoscere Flysystem, che fornisce un bel livello di astrazione per interagire con il filesystem. Fornisce driver di facile utilizzo in modo da poter interagire con esso facilmente, a prescindere dal tipo di file system in cui si sta occupando: sia il file system locale che il sistema cloud AWS S3.

Per consentire il supporto del filesystem cloud di Amazon S3 con Flysystem, è necessario installare il corrispondente pacchetto di compilatore di adattatori.

Andare avanti e eseguire il seguente comando di compositore dalla tua radice di progetto per installare il pacchetto flysystem-aws-s3-v3.

Dopo l'esecuzione di questo comando, ora è possibile utilizzare Laravel Flysystem per interagire con il filesystem Amazon S3 cloud nello stesso modo in cui avresti usato per il file system locale.

Ora, tiriamo velocemente nel file config/filesystems.php per vedere le impostazioni fornite per il filesystem Amazon S3.

Come si può vedere, la configurazione è già in atto per l'Amazon S3; è solo che abbiamo bisogno di impostare le variabili appropriate ENV nel file .env.

Vai avanti e aggiungi le seguenti variabili nel file .env.

Naturalmente, è necessario sostituire i segnaposto con i valori reali. Ora, sei pronto ad utilizzare la scheda Flysystem AWS S3 nell'applicazione Laravel.

Passare attraverso i file del pacchetto

Per creare il proprio pacchetto Laravel, la prima cosa è creare una struttura di directory appropriata che rifletta le convenzioni del sistema Laravel. Suppongo che tu sia già in esecuzione un'applicazione di Laravel di base; infatti, l'applicazione blog predefinita farà pure.

Andare avanti e creare la directory dei pacchetti nella radice dell'applicazione. Considerando che distribuirete il pacchetto con altri utenti, la struttura preferita del tuo pacchetto dovrebbe essere {vendor_name} / {package_name}.

Seguendo questa convenzione, andiamo avanti e creiamo una directory envato/aws sotto la directory dei pacchetti. Come potete immaginare, envato è il nome del fornitore e gli aws rappresentano il nome del pacchetto stesso. Infine, creiamo una directory /envato/aws/src che contiene i file di origine del nostro pacchetto.

Ora, dobbiamo informare Laravel sul nostro nuovo pacchetto. Andare avanti e aprire il file composer.json nella radice dell'applicazione Laravel e aggiungere la voce "Envato \\ Aws \\": "packages / envato / aws / src" nella sezione autoload come mostrato di seguito.

Come si può vedere, lo spazio dei nomi Envato\Aws\ viene mappato alle directory packages/envato/aws/src. Ora, abbiamo solo bisogno di eseguire il comando di autoload dump per rigenerare i mapping dei compositori.

Ora puoi utilizzare lo spazio dei nomi Envato\Aws\ nell'applicazione e raccoglierai i file dalla posizione corretta!

Composer File del pacchetto

Ora, andiamo avanti e aggiungiamo un file composer.json specifico per il pacchetto in modo da poter distribuire il tuo pacchetto al repository packagist.

Passare alla directory packages/envato/aws e eseguire il seguente comando per generare un file composer.json per il pacchetto.

Ti verrà chiesto con le domande abituale, quindi passate attraverso di esso e creerete un file composer.json.

Almeno, dovrebbe sembrare qualcosa di simile.

Itinerario

Nel nostro pacchetto creeremo una pagina semplice che visualizza lo stato del file caricato. Quindi dobbiamo creare un percorso associato a quella pagina.

Creiamo un file di percorso nei pacchettipackages/envato/aws/src/routes/web.php

Ci vuole spiegazioni affatto? Il passo successivo è creare il file di controller associato.

controllore

Creiamo un file controller nei packages/envato/aws/src/Controllers/AwsController.php con i seguenti contenuti.

Andiamo attraverso il file per capire cosa significa ogni pezzo di codice.

Iniziamo le cose impostando un namespace del nostro controller per i nomi degli spazi Envato\Aws\Controllers. Ricordiamo che abbiamo aggiunto la mappatura di Envato\Aws ai pacchetti/envato/aws/src nel file root composer.json in modo che possa trovare i file dei pacchetti.

Successivamente, abbiamo definito il metodo di caricamento che fa il necessario per sincronizzare i file locali alla cloud Amazon S3. La cosa importante da notare è il primo argomento del metodo di caricamento che richiede la dipendenza di \Illuminate\Contracts\Filesystem\Factory. Durante l'esecuzione verrà iniettato l'apposito contratto Laravel.

Ora, possiamo usare l'istanza di fabbrica del filesystem per creare istanze di disco come necessario. L'istanza del disco in Laravel è il driver che consente di accedere facilmente ai file system sottostanti, ad esempio il disco locale, la cloud Amazon S3 e simili.

Per semplicità, trasferiamo il file di immagine statica già disponibile nell'archivio locale predefinito di Laravel e il percorso è storage/app/test.jpg.

Come primo passo, prendiamo il contenuto del file di origine.

Con tutto impostato come indicato, è necessario essere in grado di sincronizzare un file su Amazon S3 utilizzando il metodo put.

Assicurarsi di aver impostato correttamente le variabili di ambiente AWS, solo nel caso in cui qualcosa non funziona come previsto.

E l'ultima cosa è chiamare un file di visualizzazione che visualizza l'immagine sincronizzata e un messaggio appropriato.

Naturalmente, non abbiamo ancora creato un file di visualizzazione, e questo è esattamente quello che riguarda la sezione successiva.

Vista

Creiamo un file di visualizzazione nei packages/envato/aws/src/views/upload.blade.php con i seguenti contenuti.

È un file di visualizzazione abbastanza standard che visualizza l'immagine caricata sul caricamento di successo o altrimenti un messaggio di errore appropriato.

Fornitore di servizi

Siamo quasi finiti con il nostro pacchetto come abbiamo creato i file necessari. Il passo successivo è quello di creare un provider di servizi in modo da poter registrare le rotte e le viste del nostro pacchetto.

Creiamo un file del provider di servizio alle packages/envato/aws/src/Providers/AwsServiceProvider.php con il seguente contenuto.

Ovviamente, avresti potuto creare il file del fornitore del servizio anche utilizzando il comando artigianale. Ma avrebbe richiesto un ulteriore passo per spostare il file da app/Provider al nostro pacchetto.

Ad ogni modo, passiamo al file del provider di servizi appena creato.

In primo luogo, carichiamo le rotte e le viste associate al nostro pacchetto.

Successivamente, forniamo il supporto di pubblicazione le opinioni dei nostri pacchetti in modo che gli sviluppatori che vogliono ignorare le viste possono farlo. La prossima volta che corrono il fornitore artigianale di php artisan vendor:publishcomando, Laravel copie le vedute da pacchetti/envato/aws/src/views risorse/viste/fornitore/AWS.

Ora, possono cambiare le viste sotto la directory di risorse/viste/fornitore/aws, e lo avrai prelevato automaticamente da Laravel invece le viste in pacchetti/envato/aws/src/visualizzazioni/. Infatti, è il modo corretto di modificare le visualizzazioni di pacchetto di terze parti, invece di modificare direttamente le viste di pacchetto.

Ecco quanto il fornitore del servizio è interessato. Come si sarebbe aspettato, abbiamo bisogno di aggiungere la voce di provider di servizio in config/app.php. Aggiungere la seguente voce nella matrice di provider.

E tu sei —tutto è in ordine ora, affinché possiamo andare avanti e provare il nostro pacchetto.

Andare avanti ed eseguire il http://your-laravel-application/aws/s3/upload URL nel tuo browser. Se tutto va bene, si dovrebbe vedere l'immagine nella pagina che viene caricata dal cloud Amazon S3. Per favore, fatemi sapere se hai qualche problema e sarò più che felice di rispondere a questi.

Quindi siamo sulla nota di chiusura di questo articolo e spero che ti sia piaciuto!

Conclusione

Oggi abbiamo discusso una delle caratteristiche importanti della gestione dei pacchetti Laravel. Nel processo di creazione del nostro pacchetto Laravel personalizzato, abbiamo passato un esempio reale che ha dimostrato come è possibile caricare un'immagine nella cloud Amazon S3.

È una caratteristica veramente bella se si desidera raggruppare e distribuire insieme un insieme di funzionalità. In realtà, puoi considerare questo come un'opzione per avvicinarsi allo sviluppo del modulo personalizzato in Laravel.

Per coloro di voi che stiamo solo iniziando con Laravel o cercando di ampliare le tue conoscenze, siti o applicazioni con estensioni, abbiamo una grande varietà di cose che puoi studiare su Envato Market.

Come sempre, potresti lasciare i tuoi commenti e commenti validi nel feed qui sotto!

Advertisement
Advertisement
Advertisement
Advertisement
Looking for something to help kick start your next project?
Envato Market has a range of items for sale to help get you started.