Maison >développement back-end >tutoriel php >7 raisons de choisir le cadre YII 2
À la fin de l'année dernière, SitePoint a publié un article mettant en évidence les meilleurs cadres PHP. À égalité pour la place numéro quatre, le framework YII (prononcé yee ). À cette époque, la dernière version du cadre disponible était 1.1.14. Récemment, YII 2.0 a été mis à disposition, vous pouvez donc commencer à l'utiliser en production.
Bien que nous l'ayons couvert récemment quand il était encore en statut RC, il a juste atteint le statut de version complète, et nous avons l'impression qu'il est temps de revoir le sujet avec certaines raisons de le choisir par rapport aux alternatives.
Pour les développeurs Web, le temps est de l'argent et personne ne veut passer son précieux temps sur un processus d'installation et de configuration compliquée.
L'installation est gérée à l'aide du compositeur. Si vous voulez une description du processus d'installation, SitePoint a récemment publié un excellent article ici. J'ai tendance à favoriser l'utilisation du modèle d'application de base, même lorsque mon site a un composant front et backend séparé. Au lieu de cela, je choisis d'utiliser un module pour la partie backend de mes sites. (Les modules YII sont mieux décrits comme des mini-applications qui résident dans votre application principale).
Remarque : De nombreuses références de répertoire dans des exemples ultérieures utilisent la structure du répertoire du modèle simple.
yii est un framework Pure OOP, et tire parti de certaines des fonctionnalités les plus avancées de PHP, y compris la liaison statique tardive, les classes et les interfaces SPL et les fonctions anonymes.
Toutes les classes sont en espionnée de noms, ce qui vous permet de profiter de leur autoader conforme PSR-4. Cela signifie que l'inclusion de la classe HTML HTML de YII est aussi simple que:
<span>use yii<span>\helpers\Html</span>;</span>
yii vous permet également de définir des alias pour vous aider à simplifier vos espaces de noms. Dans l'exemple ci-dessus, cette instruction UTILISAGE chargera une définition de classe qui est située par défaut dans le répertoire / fournisseur / yiisoft / yii2 / assistants. Cet alias est défini dans la classe de baseyii sur la ligne 79:
<span>use yii<span>\helpers\Html</span>;</span>
Le framework lui-même est installé à l'aide du compositeur, tout comme ses extensions. Même le processus de publication des extensions est aussi simple que de créer votre propre composer.json, d'héberger votre code chez GitHub et de répertorier votre extension sur Packagist.
yii est comme un costume qui a l'air super hors du rack, mais qui est également très facile à adapter à vos besoins. Presque tous les composants du cadre sont extensibles. Un exemple simple est l'ajout d'un ID corporel unique à vos vues. (Au cas où vous souhaitez savoir pourquoi vous voudrez peut-être le faire, jetez un œil à cet article).
Tout d'abord, je créerais un fichier dans mon répertoire AppComponents avec le nom View.php, et ajouter ce qui suit:
<span>public static $aliases = ['@yii' => __DIR__];</span>
Ensuite, dans mon fichier de mise en page principal (AppViewslayoutsmain.php), j'ajouterais ce qui suit à la balise corporelle de mon HTML:
<span>namespace app<span>\components</span>; </span> <span>class View extends yii<span>\web\View</span> { </span> <span>public $bodyId; </span> <span>/* Yii allows you to add magic getter methods by prefacing method names with "get" */ </span> <span>public function getBodyIdAttribute() { </span> <span>return ($this->bodyId != '') ? '' : ''; </span> <span>} </span> <span>}</span>
Et enfin, j'ajouterais ce qui suit à mon fichier de configuration principal pour informer Yii pour utiliser ma classe de vue étendue au lieu de sa propre défaut:
<span><span><span><body</span> <span><span><?=$this->BodyIdAttribute?></span></span>></span></span>
yii est étroitement intégré à la codeceception. CodeCection est un excellent cadre de test PHP qui aide à simplifier le processus de création de tests d'unité, de fonctionnement et d'acceptation pour votre application. Parce que vous écrivez des tests automatisés pour toutes vos applications, non?
L'extension CodeCection facilite la configuration de votre application pendant les tests. Modifiez simplement le fichier fourni /tests /_config.php fourni pour configurer votre application de test. Par exemple:
<span>return [ </span> <span>// ... </span> <span>'components' => [ </span> <span>// ... </span> <span>'view' => [ </span> <span>'class' => 'app\components\View' </span> <span>] </span> <span>] </span><span>];</span>
En utilisant cette configuration, ce qui suit se produirait:
Un module spécial pour le framework YII existe également dans CodeCeception. Il ajoute plusieurs méthodes à la classe Testguy, qui vous aide à travailler avec un enregistrement actif (ORM de YII) lors des tests fonctionnels. Par exemple, si vous vouliez voir si votre formulaire d'enregistrement a créé avec succès un nouvel utilisateur avec le nom d'utilisateur «TesUser», vous pouvez effectuer ce qui suit:
<span>return [ </span> <span>'components' => [ </span> <span>'mail' => [ </span> <span>'useFileTransport' => true, </span> <span>], </span> <span>'urlManager' => [ </span> <span>'showScriptName' => true, </span> <span>], </span> <span>'db' => [ </span> <span>'dsn' => 'mysql:host=localhost;dbname=mysqldb_test', </span> <span>], </span> <span>], </span><span>];</span>
La sécurité est une partie cruciale de toute application Web, et heureusement, YII a d'excellentes fonctionnalités pour vous aider à vous faciliter l'esprit.
yii est livré avec un composant d'application de sécurité qui expose plusieurs méthodes pour aider à créer une application plus sécurisée. Certaines des méthodes les plus utiles sont:
yii vérifie automatiquement un jeton CSRF valide sur toutes les méthodes de demande HTTP dangereuses (put, publier, supprimer), et générera et sortira un jeton lorsque vous utilisez la méthode ActiveForm :: Begin () pour créer votre balise de formulaire d'ouverture. Cette fonctionnalité peut être désactivée en modifiant votre fichier de configuration principal pour inclure les éléments suivants:
<span>use yii<span>\helpers\Html</span>;</span>
Afin de protéger contre les XS, YII fournit une autre classe d'assistance appelée htmlpurifier. Cette classe a une seule méthode statique nommée processus et filtrera votre sortie à l'aide de la bibliothèque de filtre populaire du même nom.
yii comprend également des cours prêts à l'emploi pour l'authentification et l'autorisation des utilisateurs. L'autorisation est divisée en deux types: ACF (filtres de contrôle d'accès) et RBAC (contrôle d'accès basé sur les rôles).
Le plus simple des deux est ACF et est implémenté en ajoutant ce qui suit à la méthode des comportements de votre contrôleur:
<span>public static $aliases = ['@yii' => __DIR__];</span>
Le code précédent indique que DefaultContrOrto permet aux utilisateurs invités d'accéder aux actions de connexion et d'afficher, mais pas de la création d'action. (? Est un alias pour les utilisateurs anonymes, et @ fait référence aux utilisateurs authentifiés).
RBAC est une méthode plus puissante pour spécifier quels utilisateurs peuvent effectuer des actions spécifiques dans votre application. Cela implique de créer des rôles pour vos utilisateurs, de définir des autorisations pour votre application, puis d'activer ces autorisations pour leurs rôles prévus. Vous pouvez utiliser cette méthode si vous vouliez créer un rôle de modérateur et permettre à tous les utilisateurs attribués à ce rôle d'approuver les articles.
Vous pouvez également définir des règles à l'aide de RBAC, qui vous permettent, dans des conditions spécifiques, d'accorder l'accès à certains aspects de votre demande. Par exemple, vous pouvez créer une règle qui permet aux utilisateurs de modifier leurs propres articles, mais pas ceux créés par d'autres.
La plupart des projets impliquent une certaine quantité de tâches répétitives avec lesquelles personne ne veut perdre de temps. Yii nous donne quelques outils pour vous aider à passer moins de temps sur ces tâches, et plus de temps à personnaliser votre application pour répondre aux besoins de vos clients.
L'un des plus puissants de ces outils est appelé «gii». GII est un outil d'échafaudage de code basé sur le Web, qui vous permet de créer rapidement des modèles de code pour:
gii est très configurable. Vous pouvez le définir sur le chargement uniquement dans certains environnements. Modifiez simplement votre fichier de configuration Web comme suit:
<span>use yii<span>\helpers\Html</span>;</span>
Cela garantit que GII ne se chargera que lorsque la variable d'environnement YII est définie sur Development , et qu'elle ne se chargera que lorsqu'il est accessible via LocalHost.
Maintenant, jetons un coup d'œil au générateur de modèle:
Le nom de la table utilise un widget Typeahead pour essayer de deviner à quel tableau est associé à votre modèle, et tous les champs ont une info-bulle de roulement pour vous rappeler comment les remplir. Vous pouvez prévisualiser le code avant de demander à GII de le générer, et tous les modèles de code sont entièrement personnalisables.
Il existe également plusieurs outils de ligne de commande disponibles pour aider à créer des modèles de code pour les migrations de base de données, les traductions de messages (I18N) et les fixations de base de données pour vos tests automatisés. Par exemple, vous pouvez créer un nouveau fichier de migration de base de données avec cette commande:
<span>public static $aliases = ['@yii' => __DIR__];</span>
Cela créera un nouveau modèle de migration dans {appdir} / migrations qui ressemble à ceci:
<span>namespace app<span>\components</span>; </span> <span>class View extends yii<span>\web\View</span> { </span> <span>public $bodyId; </span> <span>/* Yii allows you to add magic getter methods by prefacing method names with "get" */ </span> <span>public function getBodyIdAttribute() { </span> <span>return ($this->bodyId != '') ? '' : ''; </span> <span>} </span> <span>}</span>
Alors, disons que je voulais ajouter quelques colonnes à ce tableau. J'ajouterais simplement ce qui suit à la méthode UP:
<span><span><span><body</span> <span><span><?=$this->BodyIdAttribute?></span></span>></span></span>
Et puis pour m'assurer que je peux inverser la migration, je modifierais la méthode Down:
<span>return [ </span> <span>// ... </span> <span>'components' => [ </span> <span>// ... </span> <span>'view' => [ </span> <span>'class' => 'app\components\View' </span> <span>] </span> <span>] </span><span>];</span>
La création du tableau impliquerait simplement l'exécution d'une commande sur la ligne de commande:
<span>return [ </span> <span>'components' => [ </span> <span>'mail' => [ </span> <span>'useFileTransport' => true, </span> <span>], </span> <span>'urlManager' => [ </span> <span>'showScriptName' => true, </span> <span>], </span> <span>'db' => [ </span> <span>'dsn' => 'mysql:host=localhost;dbname=mysqldb_test', </span> <span>], </span> <span>], </span><span>];</span>
et pour supprimer le tableau:
<span>$I->amOnPage('register'); </span><span>$I->fillField('username', 'testuser'); </span><span>$I->fillField('password', 'qwerty'); </span><span>$I->click('Register'); </span><span>$I->seeRecord('app\models\User', array('name' => 'testuser'));</span>
Tout le monde sait qu'un site Web lent crée des utilisateurs mécontents, donc YII vous fournit plusieurs outils pour vous aider à extraire plus de vitesse de votre application.
Tous les composants de cache de Yii s'étendent à partir de yii / mise en cache / cache, qui vous permet de choisir le système de mise en cache que vous voulez tout en utilisant une API commune. Vous pouvez même enregistrer plusieurs composants de cache simultanément. YII prend actuellement en charge la mise en cache de base de données et du système de fichiers, ainsi que APC, Memcache, Redis, WinCache, Xcache et Zend Data Cache.
Par défaut, si vous utilisez un enregistrement actif, YII exécute une requête supplémentaire pour déterminer le schéma des tableaux impliqués dans la génération de votre modèle. Vous pouvez définir l'application sur cache ces schéma en modifiant votre fichier de configuration principal comme suit:
<span>return [ </span> <span>'components' => [ </span> <span>'request' => [ </span> <span>'enableCsrfValidation' => false, </span> <span>] </span> <span>];</span>
Enfin, YII a un outil de ligne de commande pour faciliter la minification des actifs frontaux. Exécutez simplement la commande suivante pour générer un modèle de configuration:
<span>use yii<span>\filters\AccessControl</span>; </span> <span>class DefaultController extends Controller { </span> <span>// ... </span> <span>public function behaviors() { </span> <span>return [ </span> <span>// ... </span> <span>'class' => AccessControl<span>::</span>className(), </span> <span>'only' => ['create', 'login', 'view'], </span> <span>'rules' => [ </span> <span>[ </span> <span>'allow' => true, </span> <span>'actions' => ['login', 'view'], </span> <span>'roles' => ['?'] </span> <span>], </span> <span>[ </span> <span>'allow' => true, </span> <span>'actions' => ['create'], </span> <span>'roles' => ['@'] </span> <span>] </span> <span>] </span> <span>]; </span> <span>} </span> <span>// ... </span><span>}</span>
Ensuite, modifiez la configuration pour spécifier les outils que vous souhaitez effectuer votre minification (par exemple le compilateur de fermeture, le compresseur YUI ou UglifyJS). Le modèle de configuration généré ressemblera à ceci:
<span>if (YII_ENV_DEV) { </span> <span>// ... </span> <span>$config['modules']['gii'] = [ </span> <span>'class' => 'yii\gii\Module', </span> <span>'allowedIPs' => ['127.0.0.1', '::1'] </span> <span>] </span><span>}</span>
Ensuite, exécutez cette commande de console afin d'effectuer la compression.
yii migrate<span>/create create_user_table</span>
Et enfin, modifiez votre fichier de configuration d'application Web pour utiliser les actifs compressés.
<span><span><?php </span></span><span> </span><span> <span>use yii<span>\db\Schema</span>; </span></span><span> </span><span> <span>class m140924_153425_create_user_table extends <span>\yii\db\Migration</span> </span></span><span> <span>{ </span></span><span> <span>public function up() </span></span><span> <span>{ </span></span><span> </span><span> <span>} </span></span><span> </span><span> <span>public function down() </span></span><span> <span>{ </span></span><span> <span>echo "m140924_153425_create_user_table cannot be reverted.\n"; </span></span><span> </span><span> <span>return false; </span></span><span> <span>} </span></span><span><span>}</span></span>
Remarque: Vous devrez télécharger et installer ces outils externes manuellement.
Comme tout bon cadre, YII vous aide à créer rapidement des applications Web modernes et à vous assurer qu'ils fonctionnent bien. Il vous pousse à créer des sites sécurisés et testables en faisant une grande partie de la durée de travail pour vous. Vous pouvez facilement utiliser la plupart de ses fonctionnalités exactement telles qu'elles sont fournies, ou vous pouvez modifier chacune pour répondre à vos besoins. Je vous encourage vraiment à le vérifier pour votre prochain projet Web!
Avez-vous essayé yii 2? Veux-tu? Faites-nous savoir!
Le cadre YII 2 est considéré comme très extensible car il permet aux développeurs de personnaliser presque chaque élément du code du noyau. Cela signifie que si un développeur doit ajuster la façon dont le cadre gère certaines tâches, il peut le faire sans avoir à modifier directement le code de base. Il s'agit d'un avantage significatif car il permet un degré élevé de flexibilité et d'adaptabilité, ce qui facilite l'adaptation du cadre pour répondre aux exigences spécifiques du projet.
Le cadre YII 2 assure des performances élevées grâce à sa technique de chargement paresseuse efficace. Cela signifie qu'il ne charge que les composants nécessaires à un processus particulier, réduisant ainsi la charge sur le serveur et améliorant les performances globales de l'application. De plus, YII 2 prend également en charge la mise en cache des données, ce qui améliore encore ses performances.
YII 2 Le cadre a des fonctionnalités de sécurité robustes intégrées dans son cœur . Il fournit des outils intégrés pour la validation des entrées, le filtrage des sorties, la prévention de l'injection SQL et la prévention des scripts croisés (XSS). Ces fonctionnalités en font un choix sécurisé pour développer des applications Web qui doivent gérer les données sensibles.
YII 2 Framework prend en charge un développement rapide grâce à sa puissante génération de code outil, gii. GII permet aux développeurs de générer rapidement du code pour les modèles, les contrôleurs, les formulaires, les modules et les extensions. Cela réduit considérablement le temps nécessaire pour rédiger du code de passe-partout, permettant aux développeurs de se concentrer davantage sur la logique métier.
Oui, Yii 2 Framework est conçu pour fonctionner de manière transparente avec du code tiers. Il utilise le Composer Dependency Manager, ce qui facilite l'intégration de bibliothèques et de packages tiers dans votre application YII 2.
YII 2 Framework A un système complet de gestion des erreurs et de journalisation. Il peut gérer à la fois les erreurs PHP et les exceptions, et il fournit une variété de cibles de journalisation, y compris des fichiers, des e-mails et des consoles de navigateur. Cela facilite le débogage et la résolution des problèmes dans votre application.
Oui, le cadre YII 2 est bien adapté pour développer des applications Web complexes. Il fournit une gamme d'outils et de fonctionnalités, tels que l'architecture MVC, les couches d'abstraction de la base de données et le support de mise en cache, qui facilite la création et le maintien d'applications complexes.
YII 2 Framework fournit un soutien étendu à l'internationalisation (I18N). Il comprend des fonctionnalités de formatage de date et d'heure, de formatage des nombres et de traduction de messages, ce qui facilite le développement d'applications pour un public mondial.
Le cadre YII 2 a une grande communauté de développeurs. Il existe de nombreux forums, blogs et tutoriels disponibles en ligne où vous pouvez trouver de l'aide et des conseils. De plus, le site Web officiel de YII fournit une documentation complète et un guide de l'utilisateur.
YII 2 Framework ressort des autres cadres PHP en raison de son haut Performances, fonctionnalités de sécurité et extensibilité. Il soutient également le développement rapide, ce qui en fait un choix populaire pour les projets à petite et à grande échelle. Cependant, le meilleur cadre pour un projet dépend des exigences spécifiques et de l'expertise de l'équipe de développement.
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!