Sparks este un nou sistem de gestionare a pachetelor pentru CodeIgniter care extinde nucleul cu suport pentru scantei asemănătoare gemului.
Acest tutorial interconectează o prezentare generală la nivel de intrare a arhitecturii și a utilizării sistemului de scântei cu crearea de dovecote - o scânteie simplă pentru gestionarea datelor RSS.
Pachetele sunt blocuri de cod reciclabil care pot face viața dezvoltatorilor mult mai ușoară.
Dezvoltatorii programului CodeIgniter au salivat mult timp peste manageri de pachete, cum ar fi pietre prețioase și sisteme de operare, sisteme care să-și împuternicească comunitățile respective cu instrumente și un depozit central pentru dezvoltarea, reciclarea și distribuirea componentelor de aplicații utile între ele. Acum, așteptarea sa terminat. Datorită unui nou sistem-sparks-CodeIgniter dezvoltatorii se pot bucura în cele din urmă, ca un sistem în continuă creștere de gestionare a pachetelor este în cele din urmă propria lor.
Dacă nu ați mai colaborat cu acestea, gândiți-vă doar la pachete ca blocuri de cod reciclabil care pot face viața dezvoltatorilor mult mai ușoară. Poate ai nevoie de o interfață cu o găleată de stocare în cloudul lui Amazon? Treci peste nopțile târzii care trec peste documentația S3 și apucă scânteia.
La rândul său, sistemul de scântei constă din trei părți:
În scopul acestui tutorial, vom introduce primele două, dar ne vom concentra pe dezvoltarea scântei și câteva considerații de bază în dezvoltarea unei scantei. Suna bine? Să vedem cum se face.
Este oficial: scânteile sunt planificate pentru integrarea în nucleul CodeIgniter, eventual imediat după ce se va lansa versiunea 2.1. Dar, deoarece nu face parte dintr-o instalare implicită - totuși - va trebui să setați sistemul manual.
Dacă sunteți pe OSX sau Linux sau dacă aveți interfață de linie de comandă a PHP instalată pe Windows, instalarea este la fel de simplă ca și instalarea unei copii curate a CodeIgniter și emiterea următoarelor în directorul de instalare:
$ php -r "$ (curl -fsSL http://getsparks.org/go-sparks)"
Dacă totul a mers bine, ar trebui să vedeți ceva de genul acesta:
Dacă din anumite motive acest lucru nu a funcționat sau dacă sunteți pe Windows și nu ați adăugat PHP în calea de comandă, puteți instala și scântei manual. Este ceva mai mult de lucru, dar rezultatul este același:
scântei
în rădăcina directorului dvs. de codificare a coduluiapplication / core / MY_Loader.php
Instalația CodeIgniter ar trebui să fie acum patch-uri pentru a suporta scântei.
În Europa medievală, fiecare conac a inclus o mică anexă pentru porumbei de a cuibui numită dovecote. De când vom construi o scânteie care implică atât tweeting cât și hrana pentru animale, numele este suficient de adecvat. Dar, de asemenea, îndeplinește singura cerință privind denumirea: să fie inclusă în depozitul de la GetSparks.org,
Numele de proiecte GetSparks trebuie să fie unice
Înainte de a putea codifica, va trebui să proiectăm un proiect. În scântei
director în rădăcina instalării CodeIgniter (creați-o, dacă nu există), adăugați un nou dosar care să mențină scânteia:
/ Scântei / porumbar
Convenția dictează că scânteile sunt organizate pe versiuni, deci avem nevoie de un subfolder pentru a ține primul proiect. 0.0.1
este un loc bun pentru a începe.
/sparks/dovecote/0.0.1
Acest dosar este locul în care va avea loc toată acțiunea. Când restul tutorialului se referă la "directorul nostru de scântei", acesta este acesta.
spark.info
FişierLucrurile sunt destul de goale până acum, dar suntem gata să începem să le umplem. Prima piesă din scânteie - și singurul dosar din punct de vedere tehnic necesar de către utilitarul scântei - este spark.info
. Creați un fișier nou numit spark.info
în directorul dvs. de spark și adăugați următoarele:
nume: dovecote versiune: 0.0.1 compatibilitate: 2.0.2 dependente: atomizor: 0.0.1 tags: ["twitter", "api", "social"]
Aceste câmpuri reprezintă toate informațiile pe care utilitarul de scânteiere trebuie să gestioneze versiunea și dependențele tuturor scânteilor din această instalare CodeIgniter. Utilitatea va căuta cinci lucruri, dar numai primele trei sunt necesare:
Nume
-- id-ul unic de scânteieversiune
-- Versiune curentă compatibilitate
-- minimă versiune CodeIgniterdependențe
-- (opțional) alte scântei cerute de această scânteie Etichete
-- (opțional) care descriu această scânteie Chiar dacă nu intenționați să utilizați singur utilitarul de scânteiere, este încă politicos să includeți a spark.info
fișier cu orice scânteie pe care intenționați să o distribuiți. Unul dintre avantajele reale de gestionare scânteie în acest fel, mai degrabă decât lipirea lor direct în scântei
este faptul că managerul de scântei poate folosi informațiile de compatibilitate, dependență și versiune din fiecare scânteie pentru a asigura o redare plăcută cu actuala instalare CodeIgniter - și una cu alta. Există și un alt beneficiu, așa cum vom vedea într-un moment: scântei instalate în afara utilitarului de manager trebuie să aibă dependințele instalate manual.
Cu fișierul informativ scris, este timpul să dați scânteie o structură. Creați patru dosare noi în directorul scânteie:
Dacă ați mai colaborat cu CodeIgniter, acestea sunt probabil nume cunoscute. lui CodeIgniter încărcător
clasa tratează scântei ca pachete, ceea ce înseamnă că conținutul acestor directoare este verificat pentru orice componente de aplicație care nu pot fi găsite în / aplicație
director. Deocamdată, acest lucru se aplică în cazul a cinci tipuri de resurse:
Înainte de a începe codarea, faceți o clipă pentru a vă asigura că directorul dvs. de scântei conține toate piesele necesare.
Totul este în ordine? Să mergem.
Creați un fișier în nou creat config
și denumiți-o dovecote.php
. Vom păstra câteva opțiuni de bază aici pentru a spune scânteii în cazul în care poate găsi date RSS:
Nu prea mult - am definit un nume de utilizator twitter (@getsparks) pentru a obține mesaje tweets de la, cu condiția ca un punct final API pentru API Timeline Twitter și a adăugat o adresă URL suplimentară pentru a căuta articole RSS.
Acum, scânteia știe unde pot fi găsite date, este timpul să se recupereze anumite fluxuri. Pentru a face acest lucru, va trebui să creați o bibliotecă - apelați-o dovecote.php
-și salvați-l în biblioteci
director:
ci = & get_instance (); public retrieve function () // build twitter URL cerere $ twitterURL = sprintf ($ this-> option ('twitterURL'), $ this-> option ('twitter')); // obține date RSS $ tweets = $ this-> ci-> atomizer-> loadURL ($ twitterURL); $ feed = $ acest-> ci-> atomizer-> loadURL ($ this-> opțiune ('feedURL')); // setați informații despre canal pentru feed nou $ info = array ('title' => 'Convolved feed'); // amestecați cele două feeduri împreună $ this-> timeline = $ feed-> convolve ($ tweets, $ info); returnați $ this-> timeline; funcția publică publica () header ('content-type: application / rss + xml'); echo $ this-> timeline-> save (); // recupera o opțiune ($ key) din fișierul config opțiunea funcției protejate ($ key) return $ this-> ci-> config-> item (cheia $); ?>
Această bibliotecă oferă funcții de ajutor pentru a prelua opțiunile din fișierul nostru de configurare și publică un feed RSS, dar piesa critică este recupera()
. Această funcție captează date RSS de la furnizorii descriși în fișierul de configurație dovecote în mai mulți pași:
stare de nervozitate
) și un punct final (twitterURL
); acum, cele două sunt combinate folosind sprintf
.loadURL
funcționează pulverizator
bibliotecă. Această funcție returnează o funcție "AtomizerFeed
"care oferă câteva funcții utile pentru manipularea datelor RSS.AtomizerFeed
„s împături
operațiunea este utilizată pentru a combina elementele celor două elemente de alimentare într-o singură alimentare, care este returnată.În acest moment, suntem aproape gata să aruncăm dovecote într-o aplicație live. Trebuie doar să verificăm dacă aplicația noastră include toate dependențele dovecote și că scântera însăși se va încărca corect.
Când am scris spark.info
, amintiți linia unde am descris dependențele lui dovecote:
Dependențe: atomizor: 0.0.1
Asta înseamnă că dovecotele se bazează pe un alt atomizor - pentru a funcționa. Odată ce spărturile sunt angajate la depozitul getparks.org, utilitarul managerului va descărca automat dependențele. În timp ce rămânem în dezvoltarea locală, trebuie să facem asta singuri.
Dacă utilizați managerul de scântei, puteți instala Atomizer navigând la directorul CodeIgniter și invocând managerul instalare
funcţie:
unelte php / spark install -v0.0.2 atomizer
Notă: Dacă sunteți pe Windows, va trebui să invocați php unelte \ spark install -v0.0.2 atomizer
in schimb.
Dacă nu utilizați managerul sau dacă instalarea nu sa terminat cu succes, puteți descărca Atomizer de la Github și extrageți-l în aplicația dvs. scântei
director de lângă dosarul care conține dovecote.
Înainte ca dovecote să fie disponibile pentru alte părți ale aplicației, va trebui să ne asigurăm că se va încărca corect. Întoarceți-vă la folderul config din directorul dvs. de spark și lipiți următoarele într-un fișier nou numit autoload.php
.
Ori de câte ori CodeIgniter încarcă o scânteie, va încerca să încarce toate resursele listate în autoload.php
de asemenea. Acest lucru permite autorilor scântei să definească resursele pe care utilizatorii ar trebui să le aibă acces imediat la încărcarea scântei. Deoarece porumbar
biblioteca este specificată aici, de exemplu, vom avea acces imediat la recupera
funcția de îndată ce este încărcată scânteia.
Merită menționat faptul că resursele descrise în secțiunea autoload.php
nu trebuie să locuiți în directorul de scântei. Atâta timp cât se află undeva în calea de căutare a CodeIgniter, aplicația ar trebui să le poată găsi. Înștiințare pulverizator
este încărcat în exemplul de mai sus; nu ar fi bine să enumerăm dependențele unui scânteie, dar să nu le putem încărca!
Salvați fișierul autoload și să-l încărcați complet. În controlerul de bun venit în aplicația principală (/application/controllers/welcome.php
), adăugați următoarele:
funcție publică dovecote () $ this-> load-> spark ('dovecote / 0.0.1'); $ This-> dovecote-> prelua (); $ This-> dovecote-> publica ();
Să trecem prin asta:
config / autoload.php
va fi încărcat, de asemenearecupera
funcția este folosită pentru a obține copii ale feedurilor RSS descrise în config / dovecote.php
recupera
este difuzat ca un feed RSS folosind dovecote lui publica
funcţieCăutați Bine ai venit / porumbar
în browser-ul dvs., și ar trebui să fiți întâmpinați cu un feed RSS care cronice tweets și articole care dovecote a colectat.
Să facem dovecote puțin mai util. În primul rând, vom crea un șablon de vizualizare de bază pentru a afișa titlul fiecărui articol în cronologie:
Evenimente recente:
- titlu; ?>
Apoi, vom face viziunea accesibilă prin furnizarea unei funcții de ajutor, pe care alte părți ale aplicației o pot folosi pentru a reda cronologia în HTML.
dovecote-> prelua (); $ data = array ('items' => $ feed-> items ()); $ ci-> încărcare-> vizualizare ("dovecote_timeline", $ date); ?>
dovecote_timeline
funcția și viziunea sa omonimă pot fi acum folosite pentru a face cronologia oriunde în aplicația noastră. Dar, ținând cont de filozofia Singur-ce-ai nevoie de CodeIgniter, nu o vom face automat disponibilă autoload.php
. În schimb, va trebui să încărăm manual ajutorul ori de câte ori este necesar. Reveniți la controlerul de bun venit al aplicației dvs. și actualizați-l porumbar
pentru a genera o versiune HTML a fluxului:
funcție publică dovecote () $ this-> load-> spark ('dovecote / 0.0.1'); $ this-> load-> helper ("dovecote"); $ This-> dovecote-> prelua (); // apela funcția helper echo dovecote_timeline ();
Reîmprospătați browserul dvs. și acum ar trebui să vedeți o listă cu toate articolele din cronometrul lui dovecote.
Felicitări! Acum sunteți proprietarul unei scântei foarte simple, dar mai sunt multe de făcut. Înainte de a trimite acasă pentru acțiune, vă recomandăm să scrieți funcții suplimentare. Detaliile depind de dvs., dar unele caracteristici utile ar putea include:
Acest tutorial oferă cele mai bune schițe despre ceea ce se poate face cu scântei și prezintă avantajele pe care scântei le pot oferi în minimizarea repetării și accelerarea dezvoltării.
Lucrați pe o scânteie proprie? Aveți probleme în a începe? Împărtășiți ceva mai mult în comentariile de mai jos și vă mulțumesc foarte mult pentru citire!