Facile gestione dei pacchetti per CodeIgniter con Sparks

Sparks è un nuovo sistema di gestione dei pacchetti per CodeIgniter che estende il core con il supporto di scintille gem-like.

Questo tutorial intreccia una panoramica entry-level dell'architettura e dell'utilizzo del sistema sparks con la creazione di dovecote, una semplice scintilla per la gestione dei dati RSS.


introduzione

I pacchetti sono blocchi di codice riciclabile che possono rendere la vita degli sviluppatori molto più semplice.

Gli sviluppatori di CodeIgniter si sono da tempo entusiasti dei gestori di pacchetti come gem e npm, sistemi che potenziano le rispettive comunità con strumenti e un repository centrale per lo sviluppo, il riciclaggio e la condivisione di componenti di applicazioni utili l'uno con l'altro. Ora, l'attesa è finita. Grazie a un nuovo sistema-sparks, gli sviluppatori di CodeIgniter possono finalmente gioire, poiché un sistema di gestione dei pacchetti in crescita è finalmente il loro.

Panoramica

Se non hai mai lavorato con loro, pensa ai pacchetti come blocchi di codice riciclabile che possono rendere la vita degli sviluppatori molto più semplice. Forse hai bisogno di un'interfaccia per un secchio di archiviazione nel cloud di Amazon? Salta le notti tarde riversandosi sulla documentazione S3 e prendi la scintilla.

Da parte sua, il sistema di scintille si compone di tre parti:

  1. Un repository centrale (getsparks.org) per l'archiviazione e la condivisione di scintille
  2. Un'utilità per la gestione delle sparks installate in una determinata app CodeIgniter
  3. Le scintille stesse

Ai fini di questo tutorial, introdurremo i primi due, ma ci concentreremo sullo sviluppo delle scintille e alcune considerazioni di base nello sviluppo di una scintilla. Suona bene? Vediamo come è fatto.


Passaggio 1: installazione di scintille

È ufficiale: le scintille sono programmate per l'integrazione nel nucleo di CodeIgniter, probabilmente appena la prossima versione 2.1. Ma dal momento che non fa parte di un'installazione predefinita, tuttavia, è necessario impostare manualmente il sistema.

Se sei su OSX o Linux, o se hai l'interfaccia della riga di comando di PHP installata su Windows, l'installazione è semplice come l'installazione di una copia pulita di CodeIgniter e l'emissione di quanto segue nella directory di installazione:

$ php -r "$ (curl -fsSL http://getsparks.org/go-sparks)"

Se tutto è andato bene, dovresti vedere qualcosa del genere:

Se per qualche motivo non funziona, oppure se sei su Windows e non hai aggiunto PHP al tuo percorso di comando, puoi anche installare manualmente le scintille. È un po 'più di lavoro, ma il risultato è lo stesso:

  1. Aggiunta di una directory di nome scintille nella radice della tua directory codeigniter
  2. Aggiunta di una classe di caricamento personalizzata a applicazione / core / MY_Loader.php
  3. (facoltativo) Download ed estrazione dell'utilità della riga di comando sparks nella directory codeigniter

L'installazione di CodeIgniter dovrebbe ora essere patchata per supportare le scintille.


Passaggio 2: Introduzione

Nell'Europa medievale, ogni casa padronale comprendeva una piccola dependance per i piccioni a nidificare chiamata colombaia. Poiché creeremo una scintilla che coinvolge sia il tweeting che i feed, il nome è abbastanza appropriato. Ma soddisfa anche l'unico requisito sulla denominazione: essere incluso nel repository di GetSparks.org,

I nomi dei progetti GetSparks devono essere unici

Delineare la scintilla

Prima che possiamo codificare, avremo bisogno di impaginare un progetto. Nel scintille directory nella root della tua installazione CodeIgniter (creala, se non esiste), aggiungi una nuova cartella per contenere la scintilla:

/ Scintille / colombaia

La convenzione impone che le scintille siano organizzate per versione, quindi avremo bisogno di una sottocartella per contenere la prima bozza. 0.0.1 è un buon punto di partenza.

/sparks/dovecote/0.0.1

Questa cartella è dove tutte le azioni avranno luogo. Quando il resto del tutorial si riferisce alla nostra "directory spark", è proprio questo.

Il spark.info File

Le cose sembrano abbastanza nude finora, ma siamo pronti per iniziare a riempirle. Il primo pezzo della scintilla - e l'unico file tecnicamente necessario dalla scintilla di utilità-è spark.info. Crea un nuovo file chiamato spark.info nella tua directory spark e aggiungi quanto segue:

nome: dovecote versione: 0.0.1 compatibilità: 2.0.2 dipendenze: Atomizzatore: tag 0.0.1: ["twitter", "api", "social"]

Questi campi rappresentano tutte le informazioni che l'utilità spark richiede per gestire la versione e le dipendenze di tutte le scintille in questa installazione CodeIgniter. L'utilità cercherà cinque cose, ma solo le prime tre sono necessarie:

  • nome -- l'unico scintilla id
  • versione -- Versione corrente
  • Compatibilità -- versione CodeIgniter minima
  • dipendenze -- (facoltativo) altre scintille richieste da questa scintilla
  • tag -- (facoltativo) tag che descrivono questa scintilla

Anche se non hai intenzione di usare tu stesso l'utilità spark, è comunque educato includere a spark.info archivia con qualsiasi scintilla pianifichi di distribuire. Uno dei veri vantaggi nel gestire le scintille in questo modo, piuttosto che incollarle direttamente nel scintille directory, è che lo spark manager può usare la compatibilità, la dipendenza e le informazioni sulla versione in ogni scintilla per garantire una buona riproduzione con l'attuale installazione CodeIgniter e tra loro. C'è anche un altro vantaggio, come vedremo tra poco: le sparks installate all'esterno dell'utility manager devono avere le loro dipendenze installate manualmente.

Organizzare la scintilla

Con il file di informazioni scritto, è ora di dare qualche scintilla alla struttura. Crea quattro nuove cartelle nella directory spark:

  • config
  • aiutanti
  • librerie
  • visualizzazioni

Se hai già lavorato con CodeIgniter, questi sono probabilmente nomi familiari. CodeIgniter di caricatore class considera le scintille come pacchetti, il che significa che il contenuto di queste directory viene controllato per tutti i componenti dell'applicazione che non possono essere trovati in /applicazione directory. Per ora, questo vale per cinque tipi di risorse:

  • configs
  • aiutanti
  • librerie
  • Modelli
  • visualizzazioni

Passaggio 3: scrivere la scintilla

Prima di iniziare la codifica, prenditi un momento per assicurarti che la tua directory di scintille contenga tutti i pezzi necessari.

Tutto in ordine? Procediamo.

Crea un file nel nuovo creato config directory e chiamarlo dovecote.php. Memorizzeremo alcune opzioni di base qui per dire alla scintilla dove può trovare i dati RSS:

Non molto per noi-abbiamo definito un nome utente twitter (@getsparks) per prelevare i tweet, fornito un endpoint API per l'API Timeline di Twitter e aggiunto un URL aggiuntivo per la ricerca di storie RSS.

Ora la scintilla sa dove trovare i dati, è ora di andare a recuperare alcuni feed. Per fare ciò, dovremo creare una libreria, chiamarla dovecote.php-e salvalo nel librerie directory:

ci = e get_instance ();  public function retrieve () // build twitter request URL $ twitterURL = sprintf ($ this-> option ('twitterURL'), $ this-> option ('twitter')); // ottiene dati RSS $ tweets = $ this-> ci-> atomizer-> loadURL ($ twitterURL); $ feed = $ this-> ci-> atomizer-> loadURL ($ this-> option ('feedURL')); // imposta le informazioni sul canale per il nuovo feed $ info = array ('title' => 'Feed convinto'); // mescola insieme i due feed $ this-> timeline = $ feed-> convolve ($ tweets, $ info); restituire $ this-> timeline;  public function publish () header ('content-type: application / rss + xml'); echo $ this-> timeline-> save ();  // recupera un'opzione ($ key) dall'opzione della funzione di protezione dei file di configurazione ($ key) return $ this-> ci-> config-> item ($ key); ?>

Questa libreria fornisce funzioni di supporto per recuperare le opzioni dal nostro file di configurazione e pubblicare un feed RSS, ma il pezzo critico è recuperare(). Questa funzione acquisisce i dati RSS dai provider descritti nel file di configurazione dovecote in diversi passaggi:

  • Innanzitutto viene generato l'indirizzo del feed RSS di Twitter. Config ha indicato un nome utente (cinguettio) e un punto finale (twitterURL); ora, i due sono combinati usando sprintf.
  • Successivamente, i dati RSS in ogni feed vengono recuperati utilizzando il loadURL funzione il atomizzatore biblioteca. Questa funzione restituisce un "AtomizerFeed"oggetto che fornisce alcune utili funzioni per manipolare i dati RSS.
  • Finalmente, AtomizerFeed'S convolve operazione viene utilizzata per combinare gli elementi dei due feed in un singolo feed, che viene restituito.
  • A questo punto, siamo quasi pronti a sparare dovecote in un'applicazione live. Abbiamo solo bisogno di verificare che la nostra applicazione includa tutte le dipendenze di colombaia e che la scintilla stessa si carichi correttamente.


    Passaggio 4: dipendenze

    Quando abbiamo scritto spark.info, ricorda la linea in cui abbiamo descritto le dipendenze della colombaia:

Dipendenze: atomizzatore: 0.0.1

Ciò significa che la colombaia si affida ad un'altra scintilla atomizzatore per funzionare. Una volta che le scintille sono state assegnate al repository getsparks.org, l'utility manager scaricherà automaticamente le dipendenze. Mentre rimaniamo nello sviluppo locale, tuttavia, dovremo farlo da soli.

Se si sta utilizzando il gestore sparks, è possibile installare Atomizer navigando nella directory CodeIgniter e richiamando il manager installare funzione:

php tools / spark install -v0.0.2 atomizzatore

Nota: Se sei su Windows, dovrai invocare strumenti php \ spark install -v0.0.2 atomizzatore anziché.

Se non si utilizza il gestore o se l'installazione non è stata completata correttamente, è possibile scaricare Atomizer da Github ed estrarlo nell'applicazione scintille directory accanto alla cartella contenente Colombaia.


Passaggio 5: caricamento automatico

Prima che la colombaia sia disponibile per altre parti dell'applicazione, dovremo assicurarci che si carichi correttamente. Ritorna alla cartella config nella tua directory spark e incolla quanto segue in un nuovo file chiamato autoload.php.

Ogni volta che CodeIgniter carica una scintilla, tenterà di caricare tutte le risorse elencate in autoload.php anche. Ciò consente agli autori di scintille di definire le risorse a cui gli utenti devono avere accesso immediato ogni volta che caricano la scintilla. Perché il colombaia libreria è specificata qui, per esempio, avremo accesso immediato al recuperare funzione non appena la scintilla viene caricata.

Vale la pena ricordare che le risorse descritte in autoload.php non è necessario risiedere nella directory spark. Finché si trovano da qualche parte nel percorso di ricerca di CodeIgniter, l'applicazione dovrebbe essere in grado di trovarli. Avviso atomizzatore viene caricato nell'esempio sopra; non sarebbe molto utile elencare le dipendenze di una scintilla ma non riuscire a caricarle!

Salva il file di caricamento automatico e carichiamo tutto. Nel controller di benvenuto nella tua applicazione principale (/application/controllers/welcome.php), aggiungere quanto segue:

funzione pubblica dovecote () $ this-> load-> spark ('dovecote / 0.0.1'); $ This-> dovecote-> recuperare (); $ This-> dovecote-> pubblicare (); 

Passiamo attraverso questo:

  1. Chiediamo a CodeIgniter di caricare la colombaia, sapendo che tutte le risorse richieste in config / autoload.php verrà caricato anche
  2. colombaia di recuperare la funzione viene utilizzata per ottenere copie dei feed RSS descritti in config / dovecote.php
  3. La timeline combinata prodotta da recuperare è servito come un feed RSS utilizzando colombaia pubblicare funzione

Guardalo in azione

Vai a benvenuto / colombaia nel tuo browser, e dovresti essere accolto con un feed RSS che descrive i tweet e gli articoli raccolti da colombaia.


Step 6: Costruire sulla Spark

Facciamo un po 'più utile la colombaia. Innanzitutto, creeremo un modello di visualizzazione di base per mostrare il titolo di ciascun articolo nella nostra timeline:

 

Eventi recenti:

  1. titolo; ?>

Successivamente, renderemo la vista accessibile fornendo una funzione di supporto che altre parti dell'applicazione possono utilizzare per il rendering della timeline in HTML.

dovecote-> recuperare (); $ data = array ('items' => $ feed-> items ()); $ ci-> load-> view ('dovecote_timeline', $ data); ?>

Il dovecote_timeline la funzione e la sua visione omonima possono ora essere utilizzate per rendere la timeline ovunque nella nostra applicazione. Ma in linea con la filosofia di CodeIgniter, che solo tu hai bisogno, non la renderemo automaticamente disponibile tramite autoload.php. Invece, avremo bisogno di caricare l'helper manualmente ogni volta che è necessario. Tornare al controller di benvenuto dell'applicazione e aggiornare il file colombaia funzione per generare una versione HTML del feed:

funzione pubblica dovecote () $ this-> load-> spark ('dovecote / 0.0.1'); $ this-> load-> helper ('dovecote'); $ This-> dovecote-> recuperare (); // chiama la funzione helper echo dovecote_timeline (); 

Aggiorna il browser e ora dovresti vedere un elenco di tutti gli elementi nella timeline di colombaia.


Avvolgendo

Congratulazioni! Ora sei il proprietario di una scintilla molto semplice, ma c'è molto di più che può essere fatto. Prima di spedire dovecote all'azione, puoi prendere in considerazione la scrittura di ulteriori funzioni. I dettagli dipendono da te, ma alcune funzioni utili potrebbero includere:

  • caching di risposte API
  • visualizzazioni per abbellire i dati recuperati
  • persistenza dei dati per salvare gli elementi della timeline più vecchi (controlla prima la licenza del feed!)

Questo tutorial offre le linee più deboli di ciò che può essere fatto con le scintille e introduce i vantaggi che le scintille possono fornire nel ridurre al minimo la ripetizione e accelerare lo sviluppo.

Stai lavorando a una tua scintilla? Hai problemi per iniziare? Condividi un po 'di più nei commenti qui sotto e ti ringrazio tanto per la lettura!