Gestion de paquetage facile pour CodeIgniter avec Sparks

Sparks est un nouveau système de gestion de paquets pour CodeIgniter qui étend le noyau avec la prise en charge d’étincelles de type gem.

Ce didacticiel entremêle une vue d’ensemble de l’architecture et de l’utilisation du système Sparks avec la création de pigeonnier, une simple étincelle pour la gestion de données RSS..


introduction

Les packages sont des blocs de code recyclable qui peuvent rendre la vie des développeurs beaucoup plus facile..

Les développeurs de CodeIgniter ont longtemps salivé les gestionnaires de paquets comme Gemmes et NPM, des systèmes qui donnent à leurs communautés respectives des outils et un référentiel central pour développer, recycler et partager des composants utiles les uns avec les autres. Maintenant, l'attente est terminée. Grâce à un nouveau système-sparks-CodeIgniter, les développeurs peuvent enfin se réjouir, car un système de gestion de paquets en croissance est enfin le leur..

Vue d'ensemble

Si vous n'avez jamais travaillé avec eux auparavant, considérez les packages comme des blocs de code recyclable qui faciliteront grandement la vie des développeurs. Peut-être avez-vous besoin d'une interface vers un compartiment de stockage dans le cloud d'Amazon? Sautez la fin de soirée en vous renseignant sur la documentation S3 et saisissez l'étincelle.

Pour sa part, le système d'étincelles se compose de trois parties:

  1. Un référentiel central (getsparks.org) pour stocker et partager les étincelles
  2. Un utilitaire pour gérer les étincelles installées dans une application CodeIgniter donnée
  3. Les étincelles

Pour les besoins de ce didacticiel, nous présenterons les deux premiers, mais nous nous concentrerons sur le développement des étincelles et quelques considérations de base pour développer une étincelle. Ça sonne bien? Voyons comment c'est fait.


Étape 1: Installation de Sparks

C'est officiel: sparks doit être intégré dans le noyau de CodeIgniter, peut-être dès la sortie de la version 2.1. Mais comme il ne fait pas encore partie d'une installation par défaut, vous devez configurer le système manuellement..

Si vous êtes sous OSX ou Linux, ou si l'interface de ligne de commande de PHP est installée sur Windows, l'installation est aussi simple que d'installer une copie vierge de CodeIgniter et d'émettre ce qui suit dans le répertoire d'installation:

$ php -r "$ (curl -fsSL http://getsparks.org/go-sparks)"

Si tout se passe bien, vous devriez voir quelque chose comme ceci:

Si, pour une raison quelconque, cela ne fonctionne pas ou si vous utilisez Windows et que vous n'avez pas ajouté PHP à votre chemin de commande, vous pouvez également installer sparks manuellement. C'est un peu plus de travail, mais le résultat est le même:

  1. Ajouter un répertoire nommé des étincelles à la racine de votre répertoire codeigniter
  2. Ajout d’une classe de chargeur personnalisée à application / core / MY_Loader.php
  3. (facultatif) Téléchargement et extraction de l'utilitaire de ligne de commande sparks dans votre répertoire codeigniter

Votre installation de CodeIgniter devrait maintenant être corrigée pour supporter les étincelles.


Étape 2: Mise en route

Dans l'Europe médiévale, chaque manoir comprenait une petite dépendance pour pigeons appelée pigeonnier. Puisque nous allons créer une étincelle impliquant à la fois tweeting et feed, le nom convient assez. Mais cela répond également à la seule exigence de nommage: être inclus dans le référentiel sur GetSparks.org,

Les noms de projet GetSparks doivent être uniques

Contour de l'étincelle

Avant de pouvoir coder, nous aurons besoin de mettre en page un projet. dans le des étincelles répertoire à la racine de votre installation CodeIgniter (créez-le, s’il n’existe pas), ajoutez un nouveau dossier pour contenir l’étincelle:

/ étincelles / pigeonnier

Selon la convention, les étincelles sont organisées par version, nous aurons donc besoin d’un sous-dossier pour contenir le premier brouillon.. 0.0.1 est un bon endroit pour commencer.

/sparks/dovecote/0.0.1

Ce dossier est l'endroit où se déroulera toute l'action. Lorsque le reste du tutoriel fait référence à notre "répertoire spark", c’est ça.

le spark.info Fichier

Les choses semblent plutôt dénudées jusqu'à présent, mais nous sommes prêts à commencer à les remplir. La première pièce de l'étincelle - et le seul dossier techniquement Champs obligatoires par l'utilitaire d'étincelle-est spark.info. Créez un nouveau fichier appelé spark.info dans votre répertoire spark et ajoutez ce qui suit:

nom: version pigeonnier: 0.0.1 compatibilité: 2.0.2 dépendances: atomiseur: 0.0.1 tags: ["twitter", "api", "social"]

Ces champs représentent toutes les informations nécessaires à l’utilitaire d’étincelle pour gérer la version et les dépendances de toutes les étincelles de cette installation CodeIgniter. L’utilitaire cherchera cinq éléments, mais seuls les trois premiers sont nécessaires:

  • prénom -- l'identifiant d'étincelle unique
  • version -- version actuelle
  • compatibilité -- version minimale de CodeIgniter
  • les dépendances -- (facultatif) autres étincelles requises par cette étincelle
  • Mots clés -- balises (facultatives) décrivant cette étincelle

Même si vous n'envisagez pas d'utiliser l'utilitaire d'étincelle vous-même, il est toujours poli d'inclure un spark.info déposer avec n'importe quelle étincelle que vous prévoyez de distribuer. L’un des avantages réels de gérer les étincelles de cette façon, plutôt que de les coller directement dans le des étincelles répertoire, c’est que le gestionnaire d’étincelles peut utiliser les informations de compatibilité, de dépendance et de version de chaque étincelle pour assurer une utilisation optimale de l’installation actuelle de CodeIgniter. Nous verrons tout à l'heure un autre avantage: les dépendances des étincelles installées en dehors de l'utilitaire de gestion doivent être installées manuellement..

Organiser l'étincelle

Avec le fichier d’information écrit, il est temps de donner une structure à l’étincelle. Créez quatre nouveaux dossiers dans le répertoire spark:

  • config
  • aides
  • les bibliothèques
  • vues

Si vous avez déjà travaillé avec CodeIgniter, ce sont probablement des noms familiers. CodeIgniter's chargeur La classe traite les étincelles comme des packages, ce qui signifie que le contenu de ces répertoires est vérifié pour tous les composants d’application qui ne peuvent pas être trouvés dans la liste. /application annuaire. Pour l'instant, cela s'applique à cinq types de ressources:

  • configs
  • aides
  • les bibliothèques
  • des modèles
  • vues

Étape 3: écriture de l'étincelle

Avant de commencer à coder, prenez un moment pour vous assurer que votre répertoire spark contient toutes les pièces nécessaires..

Tout est en ordre? Continuons.

Créer un fichier dans le fichier nouvellement créé config répertoire et nommez-le pigeonnier.php. Nous allons stocker quelques options de base ici pour indiquer l'étincelle où il peut trouver des données RSS:

Pas grand chose - nous avons défini un nom d'utilisateur Twitter (@getsparks) pour récupérer les tweets, a fourni un point de terminaison d'API pour l'API Timeline de Twitter et ajouté une URL supplémentaire pour la recherche d'histoires RSS.

Maintenant que l'étincelle sait où trouver des données, il est temps d'aller récupérer certains flux. Pour ce faire, nous devrons créer une bibliothèque: appelez-la. pigeonnier.php-et enregistrez-le dans le les bibliothèques annuaire:

ci = & get_instance ();  public function retrieve () // construire l'URL de la demande twitter $ twitterURL = sprintf ($ this-> option ('twitterURL'), $ this-> option ('twitter')); // récupère les données RSS $ tweets = $ this-> ci-> atomizer-> loadURL ($ twitterURL); $ feed = $ this-> ci-> atomizer-> loadURL ($ this-> option ('feedURL')); // définit les informations sur le canal pour le nouveau flux $ info = array ('title' => 'Flux convolved'); // mélange les deux flux $ this-> timeline = $ feed-> convolve ($ tweets, $ info); retourne $ this-> timeline;  fonction publique publish () header ('content-type: application / rss + xml'); echo $ this-> timeline-> save ();  // récupère une option ($ key) à partir d'une option de fonction protégée par des fichiers de configuration ($ key) return $ this-> ci-> config-> item ($ key); ?>

Cette bibliothèque fournit des fonctions d’aide permettant de récupérer des options de notre fichier de configuration et de publier un flux RSS, mais l’essentiel est: récupérer(). Cette fonction récupère les données RSS des fournisseurs décrits dans le fichier de configuration du pigeonnier en plusieurs étapes:

  • Tout d'abord, l'adresse du flux RSS Twitter est générée. Config décrit un nom d'utilisateur (gazouillement) et un point final (twitterURL) maintenant, les deux sont combinés en utilisant sprintf.
  • Ensuite, les données RSS de chaque flux sont récupérées à l’aide du bouton loadURL fonctionner le atomiseur bibliothèque. Cette fonction retourne un "AtomizerFeed"objet qui fournit des fonctions utiles pour manipuler des données RSS.
  • finalement, AtomizerFeedde convolver Cette opération permet de combiner les éléments des deux flux en un seul flux, qui est renvoyé..
  • À ce stade, nous sommes presque prêts à lancer le pigeonnier dans une application en direct. Nous devons juste vérifier que notre application inclut toutes les dépendances du pigeonnier et que l'étincelle se charge correctement..


    Étape 4: dépendances

    Quand nous avons écrit spark.info, rappelons la ligne où nous avons décrit les dépendances du pigeonnier:

Dépendances: Atomizer: 0.0.1

Cela signifie que le pigeonnier repose sur une autre fonction, Atomizer-to. Une fois que les étincelles sont validées dans le référentiel getsparks.org, l'utilitaire de gestion télécharge automatiquement les dépendances. Bien que nous restions dans le développement local, cependant, nous devrons le faire nous-mêmes..

Si vous utilisez le gestionnaire d'étincelles, vous pouvez installer Atomizer en accédant à votre répertoire CodeIgniter et en appelant le gestionnaire. installer une fonction:

outils php / spark install -v0.0.2 atomiseur

Remarque: Si vous êtes sous Windows, vous devrez invoquer outils php \ spark install -v0.0.2 atomiseur au lieu.

Si vous n'utilisez pas le gestionnaire, ou si l'installation ne s'est pas terminée correctement, vous pouvez télécharger Atomizer à partir de Github et l'extraire dans le dossier de votre application. des étincelles répertoire à côté du dossier contenant le pigeonnier.


Étape 5: Chargement automatique

Avant que le pigeonnier ne soit disponible pour d'autres parties de l'application, nous devrons nous assurer qu'il se chargera correctement. Revenez dans le dossier config de votre répertoire spark et collez le texte suivant dans un nouveau fichier appelé autoload.php.

Chaque fois que CodeIgniter charge une étincelle, il tente de charger toutes les ressources énumérées dans autoload.php ainsi que. Cela permet aux auteurs d’étincelles de définir les ressources auxquelles les utilisateurs doivent avoir un accès immédiat chaque fois qu’ils chargent l’étincelle. Parce que le colombier bibliothèque est spécifiée ici, par exemple, nous aurons un accès immédiat à la récupérer fonctionner dès que l'étincelle est chargée.

Il convient de mentionner que les ressources décrites dans autoload.php ne doit pas nécessairement résider dans le répertoire spark. Tant qu'ils sont situés quelque part dans le chemin de recherche de CodeIgniter, l'application doit pouvoir les trouver. Remarquer atomiseur est en cours de chargement dans l'exemple ci-dessus; il ne serait pas très utile d'énumérer les dépendances d'une étincelle, mais de ne pas pouvoir les charger!

Enregistrez le fichier de chargement automatique et chargeons-le. Dans le contrôleur de bienvenue de votre application principale (/application/controllers/welcome.php), ajoutez ce qui suit:

fonction publique dovecote () $ this-> load-> spark ('pigeonnier / 0.0.1'); $ this-> dovecote-> retrieve (); $ this-> pigeonnier-> publier (); 

Passons en revue cela:

  1. Nous demandons à CodeIgniter de charger le pigeonnier, sachant que toutes les ressources demandées dans config / autoload.php sera chargé ainsi
  2. pigeonnier récupérer Cette fonction est utilisée pour obtenir des copies des flux RSS décrits dans config / dovecote.php
  3. La chronologie combinée produite par récupérer est servi comme un flux RSS en utilisant pigeonnier publier une fonction

Le voir en action

Naviguez vers bienvenue / pigeonnier dans votre navigateur, et vous devriez recevoir un flux RSS relatant les tweets et les articles rassemblés par le pigeonnier..


Étape 6: Construire sur l'étincelle

Rendons le pigeonnier un peu plus utile. Tout d'abord, nous allons créer un modèle de vue de base pour afficher le titre de chaque article dans notre chronologie:

 

Événements récents:

  1. Titre; ?>

Ensuite, nous allons rendre la vue accessible en fournissant une fonction d'assistance que d'autres parties de l'application peuvent utiliser pour afficher le scénario en HTML..

pigeonnier-> récupérer (); $ data = array ('items' => $ feed-> items ()); $ ci-> load-> view ('dovecote_timeline', $ data); ?>

le dovecote_timeline fonction et sa vue éponyme peuvent maintenant être utilisés pour rendre la timeline n'importe où dans notre application. Mais, conformément à la philosophie «CodeIgniter», nous ne le rendrons pas automatiquement disponible via autoload.php. Au lieu de cela, nous devrons charger l’assistant manuellement chaque fois que cela est nécessaire. Retournez au contrôleur de bienvenue de votre application et mettez à jour le colombier fonction pour générer une version HTML du flux:

fonction publique dovecote () $ this-> load-> spark ('pigeonnier / 0.0.1'); $ this-> load-> helper ('pigeonnier'); $ this-> dovecote-> retrieve (); // appelle la fonction d'assistance echo dovecote_timeline (); 

Actualisez votre navigateur et vous devriez maintenant voir une liste de tous les éléments de la timeline du pigeonnier.


Emballer

Toutes nos félicitations! Vous êtes maintenant le propriétaire d'une étincelle très simple, mais il y a beaucoup plus qui peut être fait. Avant d’envoyer le pigeonnier à l’action, vous pouvez envisager d’écrire des fonctions supplémentaires. Les détails dépendent de vous, mais certaines fonctionnalités utiles pourraient inclure:

  • mise en cache des réponses de l'API
  • vues pour embellir les données récupérées
  • persistance des données pour sauvegarder des éléments de chronologie plus anciens (vérifiez d'abord la licence de flux!)

Ce didacticiel présente les grandes lignes de ce qui peut être fait avec les étincelles et présente les avantages que ces étincelles peuvent offrir en réduisant les répétitions et en accélérant le développement..

Travailler sur une étincelle? Vous avez des problèmes pour vous lancer? Partagez un peu plus dans les commentaires ci-dessous et merci beaucoup pour la lecture!