Come costruire il proprio pacchetto Laravel - Capitolo 1

fonte immagine: http://culttt.com

Ciao programmatori, di solito trovi alcune librerie di Laravel all'interno di Packagist? Ad esempio, vuoi esportare i tuoi dati in formato Excel, puoi cercarli all'interno di packagist e troverai questo fantastico pacchetto che puoi usare.

Incredibilmente possiamo costruire il nostro pacchetto / libreria Laravel e pubblicarlo su github o persino packagist in modo che il tuo pacchetto sia rilevabile per gli altri. Tratterò questo in diversi capitoli e in questo primo capitolo creeremo il nostro semplice pacchetto Laravel.

Costruiremo un semplice pacchetto di formattazione di valuta. Il pacchetto formatterà un numero in un numero formattato con la valuta specificata. Sembra un lungo cammino per costruirlo, quindi in questo capitolo tratterò le funzionalità di base del fornitore di servizi, il percorso, il controller e la vista per costruire un pacchetto.

Installa Laravel

In questa serie useremo Laravel 5.5 per sviluppare pacchetti in modo da assicurarci che i requisiti del tuo server siano soddisfatti.

Basta seguire le istruzioni di installazione, quindi faremo bene.

Crea directory dei pacchetti

Sappiamo che i nostri pacchetti installati vivono all'interno della directory del fornitore e che viene ignorato per impostazione predefinita. Inoltre non dovremmo modificare il codice direttamente dalla directory del fornitore.

Quindi, consente di creare una cartella dalla directory radice laravel con questa struttura:

app / packages / VENDOR_NAME / nome_pacchetto / src

Ora la nostra cartella potrebbe apparire così:

struttura delle cartelle del formatter valuta

pacchetti: cartella per posizionare i fornitori dei nostri pacchetti.

teknomuslim: nome del fornitore
currencyformatter: nome del pacchetto
src: cartella per l'immissione dei codici del nostro pacchetto.

Come puoi vedere, puoi cambiare il nome della cartella in base alle tue necessità.

Iniziazione del compositore

Dobbiamo avviare il nostro pacchetto usando compositore in modo che il tuo pacchetto possa essere installato nel tuo Laravel come fornitore in seguito. Non ti preoccupare, il compositore ha la capacità di generare file composer.json con comando integrato.

Usando il terminale, vai alla nostra cartella del nome del pacchetto, in questo capitolo è pacchetti / teknomuslim / currencyformatter ed esegui il seguente comando:

compositore init

Segui le istruzioni del compositore, se non sai come rispondere basta premere Invio per utilizzare la risposta predefinita. Puoi cambiarlo in seguito direttamente sul tuo composer.json generato.

Ora, abbiamo il nostro composer.json

{
    "name": "teknomuslim / currency-formatter",
    "descrizione": "formattatore del numero di valuta semplice",
    "autori": [
        {
            "name": "Didik Tri Susanto",
            "email": "[email protected]"
        }
    ],
    "minima stabilità": "dev",
    "richiedono": {}
}

Eccellente, ora siamo pronti per codificare!

Definire il fornitore di servizi

Prima di definire il fornitore di servizi, è necessario caricare il nostro pacchetto. Il nostro pacchetto è implementare il caricatore automatico PSR-4, quindi dobbiamo definire il nostro spazio dei nomi del pacchetto all'interno del compositore.json di laravel

Nella sezione di caricamento automatico, installa psr-4 per il nostro pacchetto.

"caricamento automatico": {
    "classmap": [
        "database / semi",
        "database / fabbriche"
    ],
    "psr-4": {
        "App \\": "app /",
        "Teknomuslim \\ CurrencyFormatter \\": "pacchetti / teknomuslim / currencyformatter / src"
    }
},

Quindi dobbiamo caricare automaticamente il nostro pacchetto usando il comando compositore come segue:

compositore dump-autoload

Fantastico, il nostro pacchetto è già caricato automaticamente all'interno di Laravel. Facciamo un fornitore di servizi per il nostro pacchetto. Basta creare una classe CurrencyFormatterServiceProvider.php all'interno della cartella src. Non dimenticare di utilizzare lo spazio dei nomi in base al fornitore che abbiamo creato in precedenza.

Sì, è un fornitore di servizi vuoto. Lo codificheremo in seguito per aggiungere più funzionalità. Il metodo boot () viene utilizzato per avviare funzionalità del pacchetto come route, listener di eventi o altre funzionalità. Il metodo register () viene utilizzato per associare qualsiasi classe o funzionalità nel contenitore dell'app.

Successivamente, è necessario aggiungere un provider di servizi pacchetto a config / app.php all'interno dell'array provider.

/ *
 * Fornitori di servizi di pacchetti ...
 * /
Teknomuslim \ CurrencyFormatter \ CurrencyFormatterServiceProvider :: class,

Definisci percorso, controller e viste

Yay, abbiamo un pacchetto ora! Sfortunatamente, non abbiamo ancora funzionalità. Ok, iniziamo a creare un route.php all'interno del nostro pacchetto in modo che possiamo accedervi utilizzando il nostro browser.

Quindi dobbiamo caricare il nostro percorso nel metodo boot () nel fornitore di servizi che abbiamo creato in precedenza.

funzione pubblica boot ()
{
    $ This-> loadRoutesFrom (__ DIR __ '/ routes.php'.);
}

Ora esegui il tuo laravel usando

servizio artigianale php

e naviga nel tuo browser su http: // localhost: 8000 / greeting. Dovresti vedere "Ciao, questo è il tuo fantastico pacchetto!" Come output.

output della route del pacchetto

IMHO, Inserire il nostro codice direttamente nel file di route non è una buona pratica. Dal momento che vogliamo preoccuparci di modulare e separare, potremmo creare un file controller per fare logica per la nostra funzionalità.

È sufficiente creare un file controller all'interno della cartella src, oppure possiamo creare la cartella Controller e posizionarvi i file controller. Ora creeremo CurrencyFormatterController.php quindi creeremo una funzione greeting () per visualizzare l'output come abbiamo scritto prima.

Successivamente, registra il nostro controller nel fornitore di servizi di pacchetto.

/ **
 * Registrare i servizi dell'applicazione.
 *
 * @return void
 * /
registro delle funzioni pubbliche ()
{
    $ This-> app-> rendere ( 'Teknomuslim \ CurrencyFormatter \ Controller \ CurrencyFormatterController');
}

Modifica il nostro percorso per utilizzare il controller anziché la funzione di chiusura.

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

Passa nuovamente al tuo browser e dovremmo vedere lo stesso output di prima.

Che ne dite di vista? Possiamo usare il modello blade invece di restituire una stringa? Sì, un pacchetto è in grado di caricare visualizzazioni. Per fare ciò, creiamo una cartella delle viste all'interno della cartella src, quindi cariciamo nel metodo boot ().

/ **
 * Bootstrap i servizi dell'applicazione.
 *
 * @return void
 * /
funzione pubblica boot ()
{
    $ This-> loadRoutesFrom (__ DIR __ '/ routes.php'.);
    $ this-> loadViewsFrom (__ DIR __. '/ views', 'CurrencyFormatter');
}

Il secondo argomento all'interno del metodo loadViewsFrom () è uno spazio dei nomi per la vista. Ciò è necessario poiché è necessario differenziare le visualizzazioni dagli altri pacchetti.

Quindi, crea il file greeting.blade.php per rifare il nostro output di saluto. Ora prova a usare una frase di saluto diversa.




     Teknomuslim </ title>
</ Head>
<Body>
<h1 style = "text-align: center">
    <span style = "font-weight: normal"> Questo è il pacchetto di formattazione di valuta </span>
</ H1>
</ Body>
</ Html></pre><p>Quasi fatto, ora chiama view nel metodo greeting () all'interno del controller.</p><pre>/ **
 * @return \ Illuminate \ Contracts \ View \ Factory | \ Illuminate \ View \ View
 * /
saluto funzione pubblica ()
{
    vista di ritorno ('CurrencyFormatter :: greeting');
}</pre><p>Passare al browser e aggiornare.</p><img alt="ben una pagina HTML dal nostro punto di vista" src="https://imgstore.nyc3.cdn.digitaloceanspaces.com/ceadesc/1571885994956.png" /><h4>Mostra il tuo fantastico pacchetto!</h4><p>Abbiamo già creato il nostro pacchetto. Ora mostra il nostro fantastico lavoro su github in modo che altri programmatori possano imparare o usare il nostro pacchetto per le loro esigenze. Ci sono molte buone ragioni per cui dobbiamo imparare dal codice di altre persone.</p><p>Basta spingere la cartella src nel repository github. Non dimenticare di creare .gitignore perché non vogliamo impegnare un file / cartella comune come .idea / vendor, ecc.</p><p>Ecco i progressi del mio pacchetto laravel per questa serie.</p><h4>Sommario</h4><p>Quindi abbiamo creato un semplice pacchetto laravel e impariamo anche come utilizzare route, controller e view nel nostro pacchetto. Nelle prossime serie tratteremo di più funzionalità e le pubblicheremo anche in packagist.</p><p>Grazie per la lettura, spero che questa serie ti aiuti a scoprire un'altra parte fantastica del framework Laravel.</p><p>Riferimenti:</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>Buona programmazione, gente!</p></div><div class="neighbor-articles"><h4 class="ui header">Guarda anche</h4><a href="/question/how-to-hack-pandora/" title="come hackerare pandora">come hackerare pandora</a><a href="/question/how-to-use-humility-in-a-sentence/" title="come usare l'umiltà in una frase">come usare l'umiltà in una frase</a><a href="/question/how-to-delete-os-from-hard-drive/" title="come eliminare il sistema operativo dal disco rigido">come eliminare il sistema operativo dal disco rigido</a><a href="/question/how-to-turn-c-into-watts/" title="come trasformare c in watt">come trasformare c in watt</a><a href="/question/how-to-attract-dust-particles/" title="come attirare le particelle di polvere">come attirare le particelle di polvere</a><a href="/question/how-to-turn-off-auto-format-in-google-docs/" title="come disattivare il formato automatico in Google Docs">come disattivare il formato automatico in Google Docs</a><a href="/question/how-to-get-into-ucla-as-a-transfer/" title="come entrare in ucla come trasferimento">come entrare in ucla come trasferimento</a><a href="/question/how-to-make-a-creepy-doll/" title="come fare una bambola inquietante">come fare una bambola inquietante</a></div></div><div class="article-sidebar"><div class="neighbor-articles"><h4 class="ui header">Guarda anche</h4><a href="/article/how-to-get-out-of-the-rejection-downward-spiral-in-your-tech-job-search-c4c737/" title="Come uscire dalla spirale discendente del rifiuto nella tua ricerca di lavoro tecnico">Come uscire dalla spirale discendente del rifiuto nella tua ricerca di lavoro tecnico</a><a href="/article/how-to-grow-your-writing-with-a-mentor-7898b2/" title="Come far crescere la tua scrittura con un mentore">Come far crescere la tua scrittura con un mentore</a><a href="/article/how-to-implement-a-pwa-and-barba-js-into-internet-kiosks-aa4a2e/" title="Come implementare un PWA e Barba.js nei chioschi Internet">Come implementare un PWA e Barba.js nei chioschi Internet</a><a href="/article/how-to-make-a-super-fast-static-site-with-gatsby-typescript-and-sass-3fd72b/" title="Come creare un sito statico superveloce con Gatsby, Typescript e SASS">Come creare un sito statico superveloce con Gatsby, Typescript e SASS</a><a href="/article/how-to-fight-poverty-an-interview-with-meike-van-ginneken-ceo-of-snv-b92e91/" title="Come combattere la povertà: un'intervista a Meike van Ginneken, CEO di SNV">Come combattere la povertà: un'intervista a Meike van Ginneken, CEO di SNV</a><a href="/article/how-to-onboard-yourself-to-a-dao-af527e/" title="Come salire a bordo di un DAO">Come salire a bordo di un DAO</a><a href="/article/how-to-participate-in-gooreo-sales-b2ed4e/" title="COME PARTECIPARE ALLE VENDITE GOOREO">COME PARTECIPARE ALLE VENDITE GOOREO</a><a href="/article/frank-harris-how-to-create-clarity-from-ambiguity-3da78b/" title="Frank Harris: come creare chiarezza dall'ambiguità">Frank Harris: come creare chiarezza dall'ambiguità</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://fr.internautasporlapaz.org/article/how-to-build-your-own-laravel-package-chapter-1-79d79b/"><i class="fr 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://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>