Gestionarea ușoară a pachetelor pentru CodeIgniter cu scântei

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.


Introducere

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.

Prezentare generală

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:

  1. Un depozit central (getparks.org) pentru stocarea și partajarea scânteilor
  2. Un utilitar pentru gestionarea scânteilor instalate într-o aplicație CodeIgniter dată
  3. Scânteile însele

Î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.


Pasul 1: Instalarea scânteilor

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:

  1. Adăugarea unui director numit scântei în rădăcina directorului dvs. de codificare a codului
  2. Adăugarea unei clase de încărcare personalizate la application / core / MY_Loader.php
  3. (opțional) Descărcarea și extragerea utilitarului de linie de comandă sparks în directorul dvs. de codificare

Instalația CodeIgniter ar trebui să fie acum patch-uri pentru a suporta scântei.


Pasul 2: Începeți

Î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

Descrierea Scânteii

Î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şier

Lucrurile 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ânteie
  • versiune -- Versiune curentă
  • compatibilitate -- minimă versiune CodeIgniter
  • dependenț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.

Organizarea Sparkului

Cu fișierul informativ scris, este timpul să dați scânteie o structură. Creați patru dosare noi în directorul scânteie:

  • config
  • ajutoare
  • biblioteci
  • vizualizari

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:

  • configs
  • ajutoare
  • biblioteci
  • modele
  • vizualizari

Pasul 3: Scrierea scântei

Î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:

  • În primul rând, adresa feed-ului RSS de pe Twitter este generată. Config a subliniat un nume de utilizator (stare de nervozitate) și un punct final (twitterURL); acum, cele două sunt combinate folosind sprintf.
  • Apoi, datele RSS din fiecare feed sunt preluate folosind loadURL funcționează pulverizator bibliotecă. Această funcție returnează o funcție "AtomizerFeed"care oferă câteva funcții utile pentru manipularea datelor RSS.
  • In cele din urma, 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.


    Pasul 4: Dependențe

    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.


Pasul 5: Autoloading

Î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:

  1. Cerem CodeIgniter să încarce dovecote, știind că toate resursele cerute în config / autoload.php va fi încărcat, de asemenea
  2. porumbar lui recupera funcția este folosită pentru a obține copii ale feedurilor RSS descrise în config / dovecote.php
  3. Timpul combinat produs de recupera este difuzat ca un feed RSS folosind dovecote lui publica funcţie

Vezi în acțiune

Că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.


Pasul 6: Construirea pe scânteie

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:

  1. 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.


Înfășurarea în sus

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:

  • cache din răspunsurile API
  • vizualizari pentru înfrumusețarea datelor preluate
  • persistența datelor pentru a salva articolele cronologice mai vechi (verificați mai întâi licența de alimentare!)

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!