Sparks er et nytt pakkehåndteringssystem for CodeIgniter som utvider kjernen med støtte for perleaktig gnister.
Denne opplæringen forveksler en oversiktsoversikt over arkitekturen og bruken av gnistsystemet med etableringen av dovecote-en enkel gnist for å administrere RSS-data.
Pakker er blokker av resirkulerbar kode som kan gjøre utviklerens liv mye enklere.
CodeIgniter utviklere har lenge spredt seg over pakkeforvaltere som perler og npm, systemer som gir sine respektive lokalsamfunn verktøy og et sentralt lager for å utvikle, resirkulere og dele nyttige applikasjonskomponenter med hverandre. Nå er ventetiden over. Takket være et nytt system-gnister-CodeIgniter kan utviklere til slutt glede seg, da et voksende pakkehåndteringssystem endelig er sin egen.
Hvis du ikke har jobbet med dem før, tenk bare på pakker som blokker av resirkulerbar kode som kan gjøre utviklerens liv mye enklere. Kanskje trenger du et grensesnitt til en lagringsspand i Amazonas sky? Hopp over de sene nettene som helter over S3-dokumentasjonen og bare ta tak i gnisten.
Gnistsystemet består for sin del av tre deler:
I denne veiledningen vil vi introdusere de to første, men fokusere på gnistutvikling og noen grunnleggende hensyn når det gjelder å utvikle en gnist. Høres bra? La oss se hvordan det er gjort.
Det er offisielt: gnister er slated for integrasjon i CodeIgniter kjernen, muligens så snart som den kommende 2,1 utgivelsen. Men siden det ikke er en del av en standard installasjon, men du må sette systemet opp manuelt.
Hvis du er på OSX eller Linux, eller hvis du har PHPs kommandolinjegrensesnitt installert på Windows, er installasjonen så enkelt som å installere en ren kopi av CodeIgniter og utstede følgende i installasjonsmappen:
$ php -r "$ (curl -fsSL http://getsparks.org/go-sparks)"
Hvis alt gikk bra, bør du se noe slikt:
Hvis det av en eller annen grunn ikke fungerte, eller hvis du er på Windows og ikke har lagt til PHP i kommandobanen, kan du også installere gnister manuelt. Det er litt mer arbeid, men resultatet er det samme:
gnister
i roten til kodeigniterkatalogen dinapplication / kjerne / MY_Loader.php
Din CodeIgniter-installasjon bør nå bli patched for å støtte gnister.
I middelalderens Europa, inkludert hvert herregården en liten uthus for duer å neste kalt en dovecote. Siden vi skal bygge en gnist som involverer både tweeting og feed, er navnet riktig nok. Men det oppfyller også det eneste kravet på navngivning: å bli inkludert i depotet på GetSparks.org,
GetSparks prosjektnavn må være unikt
Før vi kan kode, må vi opprette et prosjekt. I gnister
katalog i roten til CodeIgniter-installasjonen din (opprett den, hvis den ikke finnes), legg til en ny mappe for å holde gnisten:
/ Gnister / dueslaget
Konvensjonen dikterer at gnister er organisert etter versjon, så vi trenger en undermappe for å holde det første utkastet. 0.0.1
er et godt sted å starte.
/sparks/dovecote/0.0.1
Denne mappen er hvor alle handlingene finner sted. Når resten av opplæringen refererer til vår "gnistkatalog", er dette den.
spark.info
FilTing ser ganske nakne så langt, men vi er klare til å begynne å fylle dem ut. Det første stykket i gnisten - og den eneste filen teknisk nødvendig av gnistverktøyet er spark.info
. Opprett en ny fil som heter spark.info
i gnistkatalogen din, og legg til følgende:
navn: dovecote versjon: 0.0.1 kompatibilitet: 2.0.2 avhengigheter: Atomizer: 0.0.1 tags: ["twitter", "api", "social")
Disse feltene representerer all den informasjonen gnistverktøyet trenger for å håndtere versjonen og avhengighetene til alle gnistene i denne CodeIgniter-installasjonen. Verktøyet vil se etter fem ting, men bare de tre første er påkrevd:
Navn
-- det unike gnist idversjon
-- gjeldende versjon kompatibilitet
-- minimum CodeIgniter versjonavhengig
-- (valgfritt) andre gnister som kreves av denne gnisten tags
-- (valgfritt) merker som beskriver denne gnisten Selv om du ikke planlegger å bruke gnistverktøyet selv, er det fortsatt høflig å inkludere en spark.info
filen med noen gnist du planlegger å distribuere. En av de reelle fordelene ved å håndtere gnister på denne måten, i stedet for å klistre dem direkte inn i gnister
katalog, er at gnistbehandleren kan bruke kompatibilitets-, avhengighets- og versjoninformasjonen i hver gnist for å sikre fint spill med gjeldende CodeIgniter-installasjon - og hverandre. Det er også en fordel, som vi ser på et øyeblikk: gnister installert utenfor administrasjonsverktøyet må ha sine avhengigheter installert manuelt.
Med info-filen skrevet, er det på tide å gi gnisten noe struktur. Opprett fire nye mapper i gnistkatalogen:
Hvis du har jobbet med CodeIgniter før, er dette trolig kjente navn. CodeIgniter s loader
klasse behandler gnister som pakker, noe som betyr at innholdet i disse katalogene blir sjekket for eventuelle applikasjonskomponenter som ikke finnes i /applikasjon
katalogen. For nå gjelder dette fem typer ressurser:
Før vi begynner kodingen, ta et øyeblikk for å sikre at gnistkatalogen inneholder alle nødvendige brikkene.
Alt i orden? La oss fortsette.
Opprett en fil i den nylig opprettede config
katalog og navn den dovecote.php
. Vi lagrer noen grunnleggende alternativer her for å fortelle gnisten hvor den kan finne RSS-data:
Ikke mye til det - vi har definert et twitter brukernavn (@getsparks) for å få tak i tweets fra, gitt et API-sluttpunkt for Twitters Timeline API, og lagt til en ekstra nettadresse for å søke etter RSS-historier.
Nå vet gnisten hvor data kan bli funnet, det er på tide å hente frem noen feeder. For å gjøre dette må vi opprette et bibliotek - ring det dovecote.php
-og lagre det i biblioteker
katalogen:
ci = & get_instance (); offentlig funksjon hente () // bygge twitter request URL $ twitterURL = sprintf ($ this-> alternativet ('twitterURL'), $ this-> alternativet ('twitter')); // få RSS Data $ tweets = $ this-> ci-> atomizer-> loadURL ($ twitterURL); $ feed = $ this-> ci-> atomizer-> loadURL ($ this-> alternativet ('feedURL')); // sett kanalinformasjon for ny feed $ info = array ('title' => 'Convolved feed'); // bland de to feeds sammen $ this-> tidslinje = $ feed-> convolve ($ tweets, $ info); returner $ this-> tidslinje; offentlig funksjon publisering () header ('content-type: application / rss + xml'); ekko $ this-> tidslinje-> lagre (); // hente et alternativ ($ key) fra config files beskyttet funksjonsalternativ ($ key) return $ this-> ci-> config-> item ($ key); ?>
Dette biblioteket gir hjelpefunksjoner for å hente alternativer fra vår config-fil og publisere et RSS-feed, men det kritiske stykket er hente()
. Denne funksjonen tar tak i RSS-data fra leverandørene som er beskrevet i dovecotes konfigurasjonsfil i flere trinn:
twitter
) og et sluttpunkt (twitterURL
); nå blir de to kombinert med sprintf
.loadURL
funksjonen atomizer
bibliotek. Denne funksjonen returnerer en "AtomizerFeed
"objekt som gir noen nyttige funksjoner for å manipulere RSS-data.AtomizerFeed
's Slør
Operasjonen brukes til å kombinere de to feeds-elementene i en enkelt feed, som returneres.På dette tidspunktet er vi nesten klare til å skyte opp dovecote i et live-program. Vi må bare sjekke for at vår søknad inkluderer alle dovecotes avhengigheter, og at gnisten selv vil lastes inn riktig.
Da vi skrev spark.info
, minnes linjen der vi beskrev dovecotes avhengigheter:
Avhengigheter: Atomizer: 0.0.1
Dette betyr at dovecote er avhengig av en annen gnist-Atomizer-funksjon. Når gnister er forpliktet til getsparks.org-depotet, vil programvaren laste ned avhengigheter automatisk. Mens vi forblir i lokal utvikling, må vi imidlertid gjøre dette selv.
Hvis du bruker gnistbehandleren, kan du installere Atomizer ved å navigere til CodeIgniter-katalogen din og påkalle lederens installere
funksjon:
php verktøy / gnist installasjon -v0.0.2 forstøver
Merk: Hvis du er på Windows, må du påkalle php verktøy \ spark install-v0.0.2 forstøver
i stedet.
Hvis du ikke bruker sjefen, eller hvis installasjonen ikke ble fullført, kan du laste ned Atomizer fra Github og trekke den ut i søknadens gnister
katalog ved siden av mappen som inneholder dovecote.
Før dovecote vil være tilgjengelig for andre deler av programmet, må vi sørge for at det lastes riktig. Gå tilbake til config-mappen i gnistkatalogen din og lim inn følgende i en ny fil som heter autoload.php
.
Når CodeIgniter laster en gnist, vil den forsøke å laste inn alle ressursene som er oppført i autoload.php
også. Dette gjør at gnistforfattere kan definere ressursene som brukerne skal ha umiddelbar tilgang til når de laster gnisten. Fordi det dueslaget
bibliotek er spesifisert her, for eksempel vil vi ha umiddelbar tilgang til hente
Funger så snart gnisten er lastet.
Det er verdt å nevne at ressursene beskrevet i autoload.php
trenger ikke å ligge i gnistkatalogen. Så lenge de er plassert et sted i CodeIgniters søkebane, bør applikasjonen kunne finne dem. Legge merke til atomizer
blir lastet i eksemplet ovenfor; det ville ikke gjøre så godt å liste en gnist avhengigheter, men ikke kunne laste dem!
Lagre autoload-filen, og la oss laste den opp. I velkomstregulatoren i hovedapplikasjonen din (/application/controllers/welcome.php
), legg til følgende:
offentlig funksjon dovecote () $ this-> load-> spark ('dovecote / 0.0.1'); $ Dette-> dovecote-> hente (); $ Dette-> dovecote-> publisere ();
La oss gå gjennom det:
config / autoload.php
vil bli lastet i tillegghente
funksjonen brukes til å få kopier av RSS-feeds som er beskrevet i config / dovecote.php
hente
serveres som en RSS-feed ved hjelp av dovecote s publisere
funksjonBla til Velkommen / dueslaget
i nettleseren din, og du bør bli møtt med en RSS-feed som beskriver tweets og artikler som dovecote har samlet.
La oss gjøre dovecote litt mer nyttig. Først oppretter vi en grunnvisningsmal for å vise tittelen på hver artikkel i vår tidslinje:
Nylige hendelser:
- tittel; ?>
Deretter gjør vi visningen tilgjengelig ved å gi en hjelperfunksjon som andre deler av programmet kan bruke til å gjøre tidslinjen i HTML.
dovecote-> hente (); $ data = array ('items' => $ feed-> items ()); $ ci-> load-> view ('dovecote_timeline', $ data); ?>
De dovecote_timeline
funksjon og dens eponymous syn kan nå brukes til å gjøre tidslinjen hvor som helst i vår søknad. Men i tråd med CodeIgniters eneste-hva-du-trenger filosofi, vil vi ikke gjøre det automatisk tilgjengelig via autoload.php
. I stedet må vi laste hjelperen manuelt når det trengs. Gå tilbake til programmets velkomstkontroller, og oppdater dueslaget
funksjon for å generere en HTML-versjon av feedet:
offentlig funksjon dovecote () $ this-> load-> spark ('dovecote / 0.0.1'); $ this-> load-> hjelper ('dovecote'); $ Dette-> dovecote-> hente (); // ring hjelperen ekko dovecote_timeline ();
Oppdater nettleseren din, og du bør nå se en liste over alle elementene i dovecotes tidslinje.
Gratulerer! Du er nå eieren av en veldig enkel gnist, men det er mye mer som kan gjøres. Før du sender ut dovecote ut for handling, kan du vurdere å skrive tilleggsfunksjoner. Detaljerne er opp til deg, men noen nyttige funksjoner kan inkludere:
Denne opplæringen gir de minste skissene om hva som kan gjøres med gnister og introduserer fordelene som gnister kan gi for å minimere gjentakelse og fremskynde utvikling.
Jobber du med en gnist selv? Har problemer startet ut? Del litt mer i kommentarene nedenfor og takk så mye for å lese!