Programmation avec Yii2 Helpers

Ce que vous allez créer

Si vous demandez, "Qu'est-ce que Yii?" check-out Introduction au framework Yii, qui passe en revue les avantages de Yii et comprend un aperçu de Yii 2.0.

Quels sont les aides?

Dans la série Programmation avec Yii2, je guide les lecteurs dans l'utilisation du framework Yii2 pour PHP. Dans ce tutoriel, je vais vous donner un bref aperçu des aides. Dans Yii, les helpers sont des modules qui regroupent, entre autres, des bibliothèques utiles pour la gestion des chaînes, des fichiers, des images, des URL et du HTML. Ils sont faciles à étendre..

Je vais également partager un exemple de création d'un assistant dans Meeting Planner, au centre de notre série de startups Envato Tuts +.. 

Avant de commencer, rappelez-vous que j’essaie de participer aux discussions ci-dessous. Si vous avez une question ou une suggestion de sujet, veuillez poster un commentaire ci-dessous ou contactez-moi sur Twitter @reifman. 

Si vous avez remarqué l’écart entre les épisodes de la série Programming Yii, c’est parce que je devais avoir chirurgie du cerveau l'année dernière. Nous vous remercions de votre patience et de votre soutien. Je suis heureux de pouvoir écrire de nouveau régulièrement et je suis impatient de poursuivre la couverture de Yii2..

Bibliothèques auxiliaires Yii2

Essentiellement, les aides ne sont que des modules de prise en charge du codage à orientation topique. Voici une liste des aides fournies dans le cadre de Yii2 - cette liste est maintenant un peu plus à jour que la documentation et ses menus:

  • ArrayHelper simplifie la gestion des baies avec des fonctions telles que la recherche sécurisée de valeurs, la cartographie, la fusion, etc..
  • La console prend en charge la fonctionnalité de ligne de commande, collecte les entrées et les affiche en couleur.
  • FileHelper étend les fonctionnalités de base de la gestion de fichiers PHP.
  • FormatConverter convertit différents formats, principalement des dates pour l'instant.
  • Html génère par programmation des balises HTML couramment utilisées.
  • HtmlPurifier nettoie le texte saisi par les utilisateurs pour améliorer la sécurité.
  • Imagine fournit des fonctionnalités de manipulation d'images fournies par l'extension yii2-imagine.
  • Inflector fournit des fonctions de chaîne utiles pour les transformations courantes.
  • Json encode et décode les données JSON.
  • Markdown convertit le démarquage en HTML.
  • StringHelper étend les fonctions PHP de base pour les chaînes.
  • Url aide à créer par programme des URL et à les mémoriser pour la navigation..
  • VarDumper fournit une fonctionnalité avancée var_dump.

J'utilise couramment les aides HTML et URL dans mes applications Yii. Et, vous vous en souvenez peut-être, j’ai utilisé l’assistant Imagine dans Construction de votre démarrage avec PHP: Paramètres de l’utilisateur, images de profil et détails de contact pour redimensionner les images de profil téléchargées..

Voyons brièvement quelques-uns des assistants les moins connus.

ArrayHelper

Comme vous pouvez le constater, ArrayHelper fournit une poignée de fonctions utiles orientées sur les tableaux..

Par exemple, getValue simplifie la recherche de valeurs à partir de clés dans des tableaux complexes:

// travail avec le tableau $ username = \ yii \ helpers \ ArrayHelper :: getValue ($ _ POST, 'username'); // utilisation de l'objet $ username = \ yii \ helpers \ ArrayHelper :: getValue ($ user, 'username'); // travail avec la fonction anonyme $ fullName = \ yii \ helpers \ ArrayHelper :: getValue ($ user, fonction ($ user, $ defaultValue) return $ user-> firstName. ". $ user-> lastName;); / / utilisant le format de points pour récupérer la propriété de l'objet incorporé $ street = \ yii \ helpers \ ArrayHelper :: getValue ($ users, 'address.street'); // en utilisant un tableau de clés pour récupérer la valeur $ value = \ yii \ helpers \ ArrayHelper :: getValue ($ versions, ['1.0', 'date']);

Ou map () construit un tableau de valeurs de clé simple à partir d'un tableau plus complexe:

$ array = [['id' => '123', 'name' => 'aaa', 'class' => 'x'], ['id' => '124', 'name' => 'bbb ',' class '=>' x '], [' id '=>' 345 ',' name '=>' ccc ',' class '=>' y '],]; $ result = ArrayHelper :: map ($ array, 'id', 'name'); // le résultat est: // [// '123' => 'aaa', // '124' => 'bbb', // '345' => 'ccc', //] 

HtmlPurifier

Vous pouvez utiliser HtmlPurifier pour améliorer la sécurité du traitement avec la saisie de l'utilisateur. Par exemple, si quelqu'un colle le code d'injection SQL dans votre formulaire comme ci-dessus, le nettoyer avec HtmlPurifier neutralisera toute attaque..

echo HtmlPurifier :: process ($ html); 

Il exploite la bibliothèque open source HTML Purifier.

StringHelper

StringHelper fournit des méthodes étendues pour travailler avec des chaînes en PHP. Par exemple, truncateWords () peut réduire une chaîne à un certain nombre de mots mais également conserver le code HTML correct dans le résultat..

Construire votre propre aide

Au fur et à mesure que Meeting Planner, l'objectif de la série de startups, prenait de l'ampleur, j'ai trouvé utile de créer une aide de base que je pourrais utiliser. Pour l'instant, j'ai tout combiné en un seul appelé MiscHelpers.php:

Vous pouvez voir une variété de méthodes sont incluses de différents types. Par exemple, getDisplayName () renvoie un nom d'utilisateur, un email ou des chaînes concaténées de prénom et nom lorsque disponibles.

Il est utile de les créer une seule fois au même endroit plutôt que de les réécrire différemment dans les modèles, au besoin..

J'ai créé MiscHelpers.php en créant un fichier dans / common / components et en construisant une classe que je pourrais appeler tout au long de l'application.

le buildCommandCette fonction facilite la création par programmation de liens pour les messages électroniques sortants, notamment la capacité d'authentifier les utilisateurs à l'aide du $ clé_auth stocké dans la base de données.

fonction statique publique buildCommand ($ meeting_id, $ cmd = 0, $ obj_id = 0, $ actor_id = 0, $ auth_key = ") // to do - construit une chaîne de destination locale ou distante // note: si modifié, changez dans Message.php, retournez Url :: to (['meeting / command', 'id' => $ meeting_id, 'cmd' => $ cmd, 'actor_id' => $ actor_id, 'k' => $ auth_key, ' obj_id '=> $ obj_id,], true); 

Ce module n'a pas vraiment de particularité à part qu'il ressemble au but des Helpers Yii standard que j'ai décrits plus tôt..

Partout où je veux utiliser les fonctions MiscHelper, je peux utiliser le code suivant: