Eenvoudig pakketbeheer voor CodeIgniter met Sparks

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.


Invoering

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.

Overzicht

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:

  1. Een centrale repository (getsparks.org) voor het opslaan en delen van vonken
  2. Een hulpprogramma voor het beheer van de vonken die zijn geïnstalleerd in een bepaalde CodeIgniter-app
  3. De vonken zelf

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.


Stap 1: Sparks installeren

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:

  1. Een map toevoegen met de naam vonken in de hoofdmap van uw codeigniter-map
  2. Een aangepaste Loader Class toevoegen aan application / kern / MY_Loader.php
  3. (optioneel) Het opdrachtprogramma voor de sparks-opdrachtregel downloaden en extraheren naar uw codeigniter-map

Uw CodeIgniter-installatie moet nu worden aangepast om vonken te ondersteunen.


Stap 2: Aan de slag

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

Overzicht van de Spark

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.

De spark.info het dossier

Het 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-ID
  • versie -- huidige versie
  • verenigbaarheid -- minimale CodeIgniter-versie
  • afhankelijkheden -- (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.

De Spark organiseren

Met het info-bestand geschreven, is het tijd om de vonk wat structuur te geven. Maak vier nieuwe mappen in de spark-map:

  • config
  • helpers
  • bibliotheken
  • keer bekeken

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:

  • configs
  • helpers
  • bibliotheken
  • modellen
  • keer bekeken

Stap 3: De vonk schrijven

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:

  • Eerst wordt het adres van de Twitter RSS-feed gegenereerd. Config heeft een gebruikersnaam geschetst (tjilpen) en een eindpunt (twitterURL); nu worden de twee gecombineerd met behulp van sprintf.
  • Vervolgens worden de RSS-gegevens in elke feed opgehaald met behulp van de loadURL functioneer de verstuiver bibliotheek. Deze functie retourneert een "AtomizerFeed"object dat enkele nuttige functies biedt voor het manipuleren van RSS-gegevens.
  • Tenslotte, 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.


    Stap 4: Afhankelijkheden

    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.


Stap 5: Autoloading

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:

  1. We vragen CodeIgniter om duiventil te laden, wetende dat alle gevraagde bronnen binnen zijn config / autoload.php zal ook worden geladen
  2. duiventil's terugvinden functie wordt gebruikt om kopieën van de RSS-feeds te krijgen die worden beschreven in config / dovecote.php
  3. De gecombineerde tijdlijn geproduceerd door terugvinden wordt geserveerd als een RSS-feed met duiventillen publiceren functie

Zie het in actie

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


Stap 6: Voortbouwen op de Spark

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:

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


Afsluiten

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:

  • caching van API-antwoorden
  • keer bekeken voor het verfraaien van de opgehaalde gegevens
  • gegevenspersistentie om oudere tijdlijnitems te bewaren (controleer eerst de feedlicentie!)

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!