Sparks is een nieuw pakketbeheersysteem voor CodeIgniter dat de kern uitbreidt met ondersteuning voor edelachtige vonken.
Deze tutorial verweeft een instapmodel van de architectuur en het gebruik van het sparks-systeem met de creatie van duiventil - een vonkje voor het beheren van RSS-gegevens.
Pakketten zijn blokken recyclebare code die het leven van ontwikkelaars een stuk eenvoudiger kunnen maken.
De ontwikkelaars van CodeIgniter zijn al lang uitgespuugd over pakketbeheerders zoals edelstenen en npm, systemen die hun respectieve community's voorzien van tools en een centrale repository voor het ontwikkelen, recyclen en delen van nuttige applicatiecomponenten met elkaar. Nu is het wachten voorbij. Dankzij een nieuwe systeemvonk-CodeIgniter kunnen ontwikkelaars zich eindelijk verheugen, omdat een groeiend pakketbeheersysteem eindelijk hun eigen is.
Als je nog niet eerder met ze hebt gewerkt, denk dan aan pakketten als blokken recyclebare code die het leven van ontwikkelaars een stuk eenvoudiger kunnen maken. Misschien heb je een interface nodig voor een opslagbunker in de cloud van Amazon? Sla de late nachten over met S3-documentatie en pak gewoon de vonk.
Het vonkenstelsel van zijn kant bestaat uit drie delen:
Voor deze tutorial introduceren we de eerste twee, maar richten we ons op vonkontwikkeling en enkele basisoverwegingen bij het ontwikkelen van een vonk. Klinkt goed? Laten we kijken hoe het gedaan is.
Het is officieel: vonken zijn gepland voor integratie in de kern van CodeIgniter, mogelijk zo snel als de aankomende 2.1-release. Maar aangezien het nog geen deel uitmaakt van een standaardinstallatie, moet u het systeem handmatig instellen.
Als u OSX of Linux gebruikt of als de PHP-opdrachtregelinterface op Windows is geïnstalleerd, is installatie zo eenvoudig als het installeren van een schone kopie van CodeIgniter en het volgende in de installatiemap:
$ php -r "$ (curl -fsSL http://getsparks.org/go-sparks)"
Als alles goed is gegaan, zou je zoiets als dit moeten zien:
Als dat om een of andere reden niet werkte, of als u Windows gebruikt en PHP niet aan uw opdrachtpad hebt toegevoegd, kunt u ook vonken handmatig installeren. Het is iets meer werk, maar het resultaat is hetzelfde:
vonken
in de hoofdmap van uw codeigniter-mapapplication / kern / MY_Loader.php
Uw CodeIgniter-installatie moet nu worden aangepast om vonken te ondersteunen.
In middeleeuws Europa omvatte elk herenhuis een klein bijgebouw voor duiven om te nestelen, een duiventil genaamd. Omdat we een vonk opbouwen die zowel tweeten als feed bevat, is de naam voldoende. Maar het voldoet ook aan de enige vereiste voor naamgeving: om te worden opgenomen in de repository op GetSparks.org,
GetSparks-projectnamen moeten uniek zijn
Voordat we kunnen coderen, moeten we een project opmaken. In de vonken
map in de root van uw CodeIgniter-installatie (maak deze aan, als deze niet bestaat), voeg een nieuwe map toe om de vonk op te slaan:
/ Vonken / duiventil
Conventie dicteert dat vonken zijn georganiseerd per versie, dus we hebben een submap nodig om de eerste versie te houden. 0.0.1
is een goede plaats om te beginnen.
/sparks/dovecote/0.0.1
In deze map vindt alle actie plaats. Wanneer de rest van de tutorial verwijst naar onze "spark directory", is dit het.
spark.info
het dossierHet ziet er tot nu toe vrij kaal uit, maar we zijn klaar om te beginnen met het invullen ervan. Het eerste stuk in de vonk - en het enige bestand technisch verplicht door de vonk utility-is spark.info
. Maak een nieuw bestand met de naam spark.info
in uw vonkmap en voeg het volgende toe:
naam: duiventil versie: 0.0.1 compatibiliteit: 2.0.2 afhankelijkheden: verstuiver: 0.0.1 tags: ["twitter", "api", "sociaal"]
Deze velden vertegenwoordigen alle informatie die het vonkhulpprogramma nodig heeft om de versie en de afhankelijkheden van alle vonken in deze CodeIgniter-installatie te beheren. Het hulpprogramma zoekt naar vijf dingen, maar alleen de eerste drie zijn vereist:
naam
-- de unieke vonk-IDversie
-- huidige versie verenigbaarheid
-- minimale CodeIgniter-versieafhankelijkheden
-- (optioneel) andere vonken vereist door deze vonk labels
-- (optioneel) tags die deze vonk beschrijven Zelfs als u niet van plan bent om het vonkhulpprogramma zelf te gebruiken, is het nog steeds beleefd om er een op te nemen spark.info
bestand met een vonk die u van plan bent te verspreiden. Een van de echte voordelen van het beheren van vonken op deze manier, in plaats van ze rechtstreeks in de vonken
directory, is dat de vonkmanager de compatibiliteits-, afhankelijkheids- en versie-informatie in elke vonk kan gebruiken om mooi te spelen met de huidige installatie van CodeIgniter en met elkaar. Er is nog een ander voordeel, zoals we in een oogwenk zullen zien: voor vonken die buiten het managerhulpprogramma zijn geïnstalleerd, moeten de afhankelijkheden handmatig zijn geïnstalleerd.
Met het info-bestand geschreven, is het tijd om de vonk wat structuur te geven. Maak vier nieuwe mappen in de spark-map:
Als u eerder met CodeIgniter hebt gewerkt, zijn dit waarschijnlijk bekende namen. CodeIgniter's lader
class behandelt vonken als pakketten, wat betekent dat de inhoud van deze mappen wordt gecontroleerd op toepassingscomponenten die niet in de /toepassing
directory. Voor nu geldt dit voor vijf soorten bronnen:
Voordat we beginnen met coderen, moet u even de tijd nemen om ervoor te zorgen dat uw sparkdirectory alle benodigde stukjes bevat.
Alles in orde? Laten we doorgaan.
Maak een bestand in de nieuw gecreëerde config
map en noem deze dovecote.php
. We slaan hier enkele basisopties op om de vonk te vertellen waar deze RSS-gegevens kan vinden:
Niet veel, we hebben een twitter-gebruikersnaam gedefinieerd (@getsparks) om tweets te grijpen, een API-eindpunt voor de tijdlijn-API van Twitter en een extra URL om te zoeken naar RSS-verhalen.
Nu weet de vonk waar gegevens kunnen worden gevonden, het is tijd om wat feeds op te halen. Om dit te doen, moeten we een bibliotheek maken - noem het dovecote.php
-en sla het op in de bibliotheken
directory:
ci = & get_instance (); public function retrieve () // build twitter request URL $ twitterURL = sprintf ($ this-> optie ('twitterURL'), $ this-> optie ('twitter')); // krijg RSS-gegevens $ tweets = $ this-> ci-> atomizer-> loadURL ($ twitterURL); $ feed = $ this-> ci-> atomizer-> loadURL ($ this-> optie ('feedURL')); // stel kanaalinformatie in voor nieuwe feed $ info = array ('title' => 'Convolved feed'); // meng de twee feeds samen $ this-> timeline = $ feed-> convolve ($ tweets, $ info); keer $ this-> tijdlijn terug; public function publish () header ('content-type: application / rss + xml'); echo $ this-> timeline-> save (); // haal een optie op ($ key) uit de functie beschermde bestanden met configuratiebestanden ($ key) return $ this-> ci-> config-> item ($ key); ?>
Deze bibliotheek biedt helperfuncties om opties uit ons configuratiebestand op te halen en een RSS-feed te publiceren, maar het kritieke stuk is ophalen ()
. Deze functie grijpt RSS-gegevens van de providers beschreven in het configuratiebestand van dovecote in verschillende stappen:
tjilpen
) en een eindpunt (twitterURL
); nu worden de twee gecombineerd met behulp van sprintf
.loadURL
functioneer de verstuiver
bibliotheek. Deze functie retourneert een "AtomizerFeed
"object dat enkele nuttige functies biedt voor het manipuleren van RSS-gegevens.AtomizerFeed
's oprollen
bewerking wordt gebruikt om de items van twee feeds te combineren in één feed, die wordt geretourneerd.Op dit moment zijn we bijna klaar om duiventil in een live-applicatie op te starten. We moeten alleen controleren of onze app alle afhankelijkheden van duiventil bevat en dat de vonk zelf correct wordt geladen.
Toen we schreven spark.info
, herinner aan de regel waar we de afhankelijkheden van duiventil beschreven:
Afhankelijkheden: verstuiver: 0.0.1
Dit betekent dat de duiventil vertrouwt op een andere vonk-verstuiver-om te functioneren. Zodra vonken zijn toegewezen aan de repository van getsparks.org, downloadt het managerhulpprogramma afhankelijkheden automatisch. Hoewel we in lokale ontwikkeling blijven, moeten we dit echter zelf doen.
Als u de vonkenmanager gebruikt, kunt u Verstuiver installeren door naar uw CodeIgniter-map te gaan en de manager in te schakelen. installeren
functie:
php tools / spark install -v0.0.2 verstuiver
Notitie: Als u Windows gebruikt, moet u een beroep doen op php tools \ spark install -v0.0.2 verstuiver
in plaats daarvan.
Als u de manager niet gebruikt of als de installatie niet is voltooid, kunt u de verstuiver downloaden van Github en uitpakken in de toepassing van uw toepassing. vonken
map naast de map met duiventil.
Voordat duiventil beschikbaar is voor andere delen van de app, moeten we ervoor zorgen dat deze correct wordt geladen. Keer terug naar de config-map in je spark-directory en plak het volgende in een nieuw bestand genaamd autoload.php
.
Wanneer CodeIgniter een vonk laadt, zal het proberen alle bronnen te laden die worden vermeld autoload.php
ook. Hiermee kunnen vonkenauteurs de bronnen definiëren waartoe gebruikers onmiddellijk toegang moeten hebben wanneer ze de vonk laden. Omdat het duiventil
bibliotheek wordt hier gespecificeerd, bijvoorbeeld, we hebben directe toegang tot de terugvinden
functioneren zodra de vonk is geladen.
Het is de moeite waard om te vermelden dat de middelen beschreven in autoload.php
hoeft zich niet in de vonkdirectory te bevinden. Zolang ze zich ergens in het zoekpad van CodeIgniter bevinden, moet de toepassing ze kunnen vinden. Merk op verstuiver
wordt geladen in het bovenstaande voorbeeld; het zou niet veel goeds doen om de afhankelijkheden van een spark op te sommen, maar ze niet kunnen laden!
Sla het autoload-bestand op en laten we het allemaal laden. In de welkomstcontroller in uw hoofdtoepassing (/application/controllers/welcome.php
), voeg het volgende toe:
openbare functie duiventil () $ this-> load-> spark ('duiventil / 0.0.1'); $ This-> dovecote-> halen (); $ This-> dovecote-> publiceren ();
Laten we daar doorheen lopen:
config / autoload.php
zal ook worden geladenterugvinden
functie wordt gebruikt om kopieën van de RSS-feeds te krijgen die worden beschreven in config / dovecote.php
terugvinden
wordt geserveerd als een RSS-feed met duiventillen publiceren
functieBlader naar welkom / duiventil
in je browser, en je zou moeten worden begroet met een RSS-feed die de tweets en artikelen die duiventil hebben verzameld, bevat.
Laten we duiventil een beetje nuttiger maken. Eerst maken we een standaardsjabloon om de titel van elk artikel in onze tijdlijn te tonen:
Recente gebeurtenissen:
- titel; ?>
Vervolgens maken we de weergave toegankelijk door een helperfunctie te bieden die andere delen van de toepassing kunnen gebruiken om de tijdlijn in HTML weer te geven.
dovecote-> ophalen (); $ data = array ('items' => $ feed-> items ()); $ ci-> load-> view ('dovecote_timeline', $ data); ?>
De dovecote_timeline
De functie en de gelijknamige weergave kunnen nu worden gebruikt om de tijdlijn overal in onze toepassing weer te geven. Maar in overeenstemming met de filosofie van CodeIgniters enige-wat-u-nodig, zullen we het niet automatisch beschikbaar maken via autoload.php
. In plaats daarvan moeten we de helper handmatig laden wanneer dit nodig is. Keer terug naar de welkomstcontroller van uw toepassing en werk het duiventil
functie om een HTML-versie van de feed te genereren:
openbare functie duiventil () $ this-> load-> spark ('duiventil / 0.0.1'); $ this-> load-> helper ('duiventil'); $ This-> dovecote-> halen (); // roep de helper-functie echo dovecote_timeline ();
Vernieuw je browser en je zou nu een lijst van alle items in de tijdlijn van duivelskot moeten zien.
Gefeliciteerd! U bent nu de eigenaar van een zeer eenvoudige vonk, maar er is nog veel meer dat kan worden gedaan. Voordat je duiventil voor actie kunt versturen, kun je overwegen extra functies te schrijven. De details zijn aan u, maar enkele handige functies kunnen zijn:
Deze tutorial biedt de kortste contouren van wat kan worden gedaan met vonken en introduceert de voordelen die vonken kunnen bieden bij het minimaliseren van herhalingen en het versnellen van ontwikkeling.
Werkt u aan een eigen vonk? Heeft u problemen om aan de slag te gaan? Deel een beetje meer in de reacties hieronder en bedankt voor het lezen!