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.
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.
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:
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.
È 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:
scintille
nella radice della tua directory codeigniterapplicazione / core / MY_Loader.php
L'installazione di CodeIgniter dovrebbe ora essere patchata per supportare le scintille.
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
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.
spark.info
FileLe 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 idversione
-- Versione corrente Compatibilità
-- versione CodeIgniter minimadipendenze
-- (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.
Con il file di informazioni scritto, è ora di dare qualche scintilla alla struttura. Crea quattro nuove cartelle nella directory spark:
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:
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:
cinguettio
) e un punto finale (twitterURL
); ora, i due sono combinati usando sprintf
.loadURL
funzione il atomizzatore
biblioteca. Questa funzione restituisce un "AtomizerFeed
"oggetto che fornisce alcune utili funzioni per manipolare i dati RSS.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.
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.
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:
config / autoload.php
verrà caricato ancherecuperare
la funzione viene utilizzata per ottenere copie dei feed RSS descritti in config / dovecote.php
recuperare
è servito come un feed RSS utilizzando colombaia pubblicare
funzioneVai a benvenuto / colombaia
nel tuo browser, e dovresti essere accolto con un feed RSS che descrive i tweet e gli articoli raccolti da colombaia.
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:
- 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.
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:
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!