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..
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..
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:
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.
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:
des étincelles
à la racine de votre répertoire codeigniterapplication / core / MY_Loader.php
Votre installation de CodeIgniter devrait maintenant être corrigée pour supporter les étincelles.
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
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.
spark.info
FichierLes 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 uniqueversion
-- version actuelle compatibilité
-- version minimale de CodeIgniterles 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..
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:
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:
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:
gazouillement
) et un point final (twitterURL
) maintenant, les deux sont combinés en utilisant sprintf
.loadURL
fonctionner le atomiseur
bibliothèque. Cette fonction retourne un "AtomizerFeed
"objet qui fournit des fonctions utiles pour manipuler des données RSS.AtomizerFeed
de 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..
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.
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:
config / autoload.php
sera chargé ainsirécupérer
Cette fonction est utilisée pour obtenir des copies des flux RSS décrits dans config / dovecote.php
récupérer
est servi comme un flux RSS en utilisant pigeonnier publier
une fonctionNaviguez vers bienvenue / pigeonnier
dans votre navigateur, et vous devriez recevoir un flux RSS relatant les tweets et les articles rassemblés par le pigeonnier..
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:
- 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.
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:
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!