Maison > développement back-end > tutoriel php > À quoi s'attendre de yii 2.0

À quoi s'attendre de yii 2.0

Jennifer Aniston
Libérer: 2025-02-19 13:02:10
original
646 Les gens l'ont consulté

À quoi s'attendre de yii 2.0

yii 2.0 a été publié en version bêta en avril dernier et l'objectif d'une première version stable a été fixé pour le milieu de 2014. . Les progrès vers le jalon 2.0RC étaient à 99%. Je suppose que l'équipe est proche, mais nous devrons probablement attendre un peu plus longtemps. Pendant que nous attendons tous, jetons un coup d'œil à ce à quoi nous pouvons nous attendre en regardant un exemple déjà disponible.

Les plats clés

  • yii 2.0 introduit des améliorations et des changements significatifs, y compris l'utilisation d'espaces de noms, de traits et d'intégration des compositeurs, améliorant ses capacités de cadre PHP modernes.
  • Le cadre est passé du framework CSS Blueprint vers Twitter Bootstrap, qui non seulement modifie l'esthétique mais fournit également des composants d'interface utilisateur étendus pour le développement rapide des applications.
  • La gestion des erreurs dans YII 2.0 a été révisée pour convertir toutes les erreurs en exceptions, en fournissant une sortie plus informative et en améliorant les processus de débogage.
  • GII, l'outil de génération de code dans YII, reste intégral dans YII 2.0, soutenant désormais une meilleure génération de code pour les opérations et l'internationalisation de CRUD.
  • yii 2.0 nécessite PHP 5.4 ou plus et utilise des fonctionnalités de PHP avancées, ce qui peut affecter la compatibilité avec les environnements de serveur plus anciens, mais offre finalement un cadre plus robuste et sécurisé.

un tout petit peu d'histoire

La première version de YII est devenue populaire assez rapidement après sa sortie en 2008. C'est le fondateur, Qiang Xue, a précédemment travaillé sur le cadre Prado et a utilisé l'expérience et les commentaires de cela pour construire Yii.

yii utilise de nombreuses idées d'autres frameworks, langues et bibliothèques: Prado, Ruby, JQuery, Symfony et Joomla sont tous reconnus comme des sources d'inspiration.

Les premiers engagements pour YII 2.0 remontent à 2011, mais le développement a repris l'année dernière. L'équipe a fait une réécriture dans le but de devenir le cadre PHP de la nouvelle génération de pointe. Il adopte les dernières technologies et fonctionnalités, telles que le compositeur, le PSR, les espaces de noms, les traits, etc.

quelque chose qui mérite d'être mentionné est que, selon la page de téléchargement, la prise en charge de la version 1.1 se terminera le 31 décembre 2015, nous avons donc du temps pour commencer à penser à faire la transition.

exigences

L'utilisation des espaces de noms et des traits a augmenté les exigences de PHP 5.4. De plus, vous aurez besoin des extensions MB_String, PDO et INTL lorsque vous commencez à vous développer. Cela ne devrait pas être un problème si vous exécutez votre propre serveur, mais peut-être si vous êtes sur un environnement partagé. Bien sûr, avec le temps, cette question disparaîtra.

Installation

yii est désormais installable à partir du compositeur. Nous allons bientôt passer par cette méthode d'installation.

Actuellement, deux exemples d'applications sont disponibles. Il existe un exemple de base contenant quelques pages, une page de contact et une page de connexion. L'exemple avancé ajoute un front et un backend séparé, l'interaction de la base de données, l'inscription et la récupération de mot de passe.

Pour commencer

Je vais commencer par l'exemple de base. Si vous avez déjà regardé Yii, vous reconnaîtrez le même Basic webApp que Yii 1.1 est venu avec. Installez l'exemple de base avec Composer en utilisant la commande suivante:

composer.phar create-project --prefer-dist --stability=dev yiisoft/yii2-app-basic
Copier après la connexion
Copier après la connexion
Copier après la connexion

Vous pouvez ensuite vérifier si votre serveur répond aux exigences en ouvrant http: //localhost/yii2-app-basic/requirements.php. L'application réelle s'exécutera ensuite à partir de http: // localhost / yii2-app-basic / web /.

C'est la première chose importante à remarquer: l'idée est que vous définissez la racine du document de votre application sur le / path / vers / application / web, un peu comme avec Symfony. La disposition du répertoire a un peu changé par rapport à la version 1.1. Si vous regardez attentivement, le changement est logique et améliorera la sécurité de votre application.

Auparavant, tous les composants d'application (modèles, vues, contrôleurs, framework et bibliothèques de fournisseurs) vivraient sous la racine du document dans le dossier protégé. De cette façon, la sécurité dépendait des fichiers .htaccess à respecter, ce qui signifiait que votre application était 100% peu sûre par défaut sur Nginx. Déplacer tous les composants d'application de la racine du document empêche le serveur Web d'envoyer vos composants d'application à un utilisateur.

Vous pourriez vous retrouver à chercher les sources de cadre réelles. Le cadre est un composant qui a été installé à l'aide du compositeur, il résidera donc dans le répertoire Vendoryiisoftyii. Ici, vous en trouverez beaucoup plus, mais pour l'instant, nous allons simplement en laisser ça.

Pour l'instant, modifions la configuration du serveur Web local et définissons la racine du document sur / path / vers / application / web. J'ai ajouté un virtualhost http: //yii2-app-basic.localhost/, mais faites comme vous le jugez bon pour votre propre situation. La configuration par défaut est définie pour masquer le fichier de script dans l'URL. Si vous utilisez Apache, vous devrez ajouter un fichier .htaccess au répertoire Web pour demander à Apache de réécrire, il n'est pas là par défaut.

RewriteEngine on
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . index.php
Copier après la connexion
Copier après la connexion
Copier après la connexion

un aperçu de l'application YII de base

Maintenant que nous avons l'application de base en cours d'exécution, certains félicitations sont en ordre…

À quoi s'attendre de yii 2.0

merci! Pas de science des fusées jusqu'à présent.

Vous commencerez par la page Démarrer, une page statique sur une page de contact et une page de connexion. La page de contact et le formulaire de connexion ont les mêmes fonctionnalités disponibles qu'auparavant; CAPTCHA CODE, validation du formulaire et deux utilisateurs disponibles pour la connexion. La connexion fait de même qu'auparavant; près de rien. Pourtant, c'est un bon début.

La conception de l'application de base a considérablement changé. Auparavant, vous obtenez une application construite sur le framework CSS Blueprint alors que nous commençons maintenant par Twitter Bootstrap. Amélioration? Il est probablement comparé à Blueprint, mais là encore, Bootstrap est bien plus que Blueprint n'a jamais essayé d'être.
Bootstrap vous donnera toutes sortes de composants d'application et accélérera la création d'une application. Certains pourraient dire en revanche que tous les sites se ressemblent avec Bootstrap (les thèmes ne le réparent que partiellement) et cela rendra également votre site plus grande taille. Quoi qu'il en soit, l'intégration avec YII 2.0 se fait avec l'extension YII2-Bootstrap. Cela facilite l'intégration des composants bootstrap dans vos vues.

Une autre chose que vous remarquerez est la barre de débogage en bas. Il est installé et activé par défaut, tout comme dans Symfony. Il permet un accès rapide à des tas d'informations sur votre configuration, vos demandes et votre journalisation des applications. Il conservera également un historique de demandes avec des informations de débogage.

À quoi s'attendre de yii 2.0

yii gère les erreurs différentes de PHP normalement. YII convertit toutes les erreurs (mortelles et non mortelles) en exceptions. Ceux-ci sont gérés en rendant une sortie perspicace vous pointant vers le point où vous avez gâché ou votre code a généré un avis. Même les erreurs d'analyse, pour lesquelles YII 1.1 se replierait aux erreurs de base PHP, obtiendrait un aperçu bien rendu de votre code. C'est quelque chose que la plupart d'entre nous apprécieront.

À quoi s'attendre de yii 2.0

gii est également à nouveau présent et activé par défaut.

À quoi s'attendre de yii 2.0

gii vous aidera en générant du code pour que vous puissiez commencer, un autre excellent outil pour accélérer votre développement. Il générera des modèles et des contrôleurs pour vous. Le générateur CRUD va aller plus loin et générera un ensemble MVC complet pour toutes les actions. GII générera également du code mieux adapté à l'internationalisation (i18n) en insérant immédiatement la fonction yii :: t () où vous en aurez besoin.

L'application de base est désormais également livrée avec une application de ligne de commande simple sur laquelle vous pouvez construire. YII 1.1 a déjà soutenu cela, mais vous devez obtenir un exemple du wiki.

C'est ce que vous trouverez dans l'application de base. Il existe également un exemple de l'application Advanced disponible. Il a une structure quelque peu différente mais ajoute encore plus de fonctionnalités à votre application hors de la boîte:

  • Autorisation des utilisateurs, authentification et restauration du mot de passe.
  • Une application divisée en avant et backend.

Poursuivant le regard sur la version de base, jetons de plus près et plongeons dans le code…

Qu'est-ce qui a changé?

Beaucoup de choses ont changé. Certains changements pourraient vous confondre au début, mais je trouve que la plupart des changements ont du sens et sont faciles à accepter. Voici quelques-uns des changements que j'ai trouvés intéressants, amusants ou déroutants.

l'exigence de PHP 5.4 a rendu certaines modifications possibles; Les balises courtes du tableau sont disponibles. Il est également sûr d'utiliser les balises courtes d'écho dans les vues car cela ne dépend plus des paramètres de configuration.

composer.phar create-project --prefer-dist --stability=dev yiisoft/yii2-app-basic
Copier après la connexion
Copier après la connexion
Copier après la connexion

un petit changement, mais que vous rencontrerez rapidement; Avant, vous utiliseriez yii :: app () pour accéder à l'instance d'application et à ses composants. Dans YII 2.0, cela est passé d'une fonction statique à une variable statique yii :: $ app.

La fonction traduisale yii :: t () est toujours avec nous. Il demande à YII d'utiliser le composant i18n pour traduire le texte fourni dans la langue actuelle utilisée. Vous pouvez également lui demander de remplacer les variables.

RewriteEngine on
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . index.php
Copier après la connexion
Copier après la connexion
Copier après la connexion

Le formatage et le style de l'espace réservé ont été sérieusement retravaillés, ce qui permet de formater plus d'options. Quelques exemples:

<span><span><?php
</span></span><span><span>$elements = array(1,2,3,4); //Yii 1.1
</span></span><span><span>$elements = [1,2,3,4]; //Yii 2.0
</span></span><span><span>?></span>
</span><span><span><?php echo $someVar; ?></span> //Yii 1.1
</span><span><span><?= $someVar ?></span> //always safe to use in Yii 2.0</span>
Copier après la connexion
Copier après la connexion

En raison de ce formatage d'espace réservé, le DateTimeFormatter a disparu:

<span><span><?php
</span></span><span><span>echo `Yii<span>::</span>t('app', 'Hello, {username}!', [
</span></span><span>  <span>'username' => $username,
</span></span><span><span>]);
</span></span><span><span>?></span></span>
Copier après la connexion

Cette fonctionnalité est fournie par la bibliothèque des soins intensifs. La documentation YII appelle la documentation originale pour ceci: «assez cryptique». Je vous mets au défi de le lire et d'essayer de le comprendre… Espérons que la documentation YII comprend une version plus lisible dans le temps.

contrôleurs

Avant, AccessControl () serait une fonction de votre contrôleur si vous vouliez utiliser la fonctionnalité de contrôle d'accès YII. Avec YII 2.0, le contrôle d'accès fait partie du comportement des contrôleurs ():

<span><span><?php
</span></span><span><span>echo <span>\Yii</span>::t('app', '{n, number} is spelled as {n, spellout}', ['n' => 81]);
</span></span><span><span>echo <span>\Yii</span>::t('app', 'You are {n, ordinal} in line, please hold.', ['n' => 3]); //Will echo "You are 3rd in line, please wait.".
</span></span><span><span>echo <span>\Yii</span>::t('app', 'There {n, plural, =0{are no cats} =1{is one cat} other{are # cats}}!', array(
</span></span><span>    <span>'n' => 14,
</span></span><span><span>));
</span></span><span><span>?></span></span>
Copier après la connexion

Ceci est presque identique à la façon dont il était dans yii 1.1.

J'ai remarqué que l'exemple de code (pas le framework lui-même!) Il manque de nombreux docblocks et a beaucoup de commentaires @InheritDoc. Ce n'est pas ce que vous attendez d'un exemple, mais je suppose que cela sera corrigé dans le temps.

modèles

Le modèle de base (auparavant CModel) n'a pas beaucoup changé. Les scénarios vous permettent désormais de modifier l'application des règles de validation. Vous pouvez modifier ce qui doit être validé en fonction de votre scénario actuel (c'est-à-dire un modèle avec différentes règles lorsqu'il est utilisé à partir d'un front ou d'un backend).

L'Aciverecord dérivé a cependant subi de sérieux changements. La syntaxe de la recherche avec ActiveRecord est devenue plus comme une rédaction de requêtes parce que CDBcriteria a disparu. Il a été remplacé par une facilité de récupération des informations:

<span><span><?php
</span></span><span><span>//Previously in Yii 1.1
</span></span><span><span>Yii<span>::</span>app()->dateFormatter->formatDateTime(time(), 'medium', 'medium');
</span></span><span>
</span><span><span>//In Yii 2.0
</span></span><span><span>echo <span>\Yii</span>::t('app', 'The date is {0, date, short}', time());    //uses the pre-defined 'short' notation (i18n save)
</span></span><span><span>echo <span>\Yii</span>::t('app', 'The date is {0, date, YYYY-MM-dd}', time()); //or define your own notation
</span></span><span><span>?></span></span>
Copier après la connexion

La définition des relations a également changé de façon spectaculaire. Prenons par exemple un site avec des blogueurs qui publient des articles sur les utilisateurs commentent. Les définitions de relations pour le tableau des auteurs sont décrites ci-dessous. Je vais commencer par son apparence dans yii 1.1:

composer.phar create-project --prefer-dist --stability=dev yiisoft/yii2-app-basic
Copier après la connexion
Copier après la connexion
Copier après la connexion

Comme vous pouvez le voir, vous définissez toutes les relations d'un enregistrement actif dans un grand tableau. Dans YII 2.0, vous devrez définir des méthodes Getter qui renvoient un objet ActiveQuery pour toutes ces relations. Vous devez utiliser le mot-clé «à travers» dans une relation pour définir une relation entre une table intermédiaire.

Vous avez maintenant deux options pour définir cela; Normalement, vous utiliseriez la méthode via () dans une fonction de relation. Vous pouvez également définir la relation à l'aide de la méthode viable () si vous n'avez besoin que des données dans le tableau après la table de pivot. Même exemple que ci-dessus mais maintenant pour yii 2.0:

RewriteEngine on
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . index.php
Copier après la connexion
Copier après la connexion
Copier après la connexion

C'est un exemple assez simple. La définition des relations via les fonctions Getter qui renvoient les objets ActiveQueery en permet beaucoup plus. Vous pouvez, par exemple, ajouter une fonction spécifique qui fait une requête pour les publications qui obtiennent> 50 commentaires en ajoutant un appel WHERE () dans laquier active retourné.

Un ajout intéressant est la possibilité de définir les relations Cross SGBD. Vous pouvez définir des relations entre par exemple MySQL et MongoDB ou Redis et les utiliser dans votre application comme un seul objet.

vues

La principale chose à noter dans les vues est que $ cela ne fait plus référence à l'instance du contrôleur. Dans une vue, $ il s'agit d'une instance de l'objet YiiWebView. Le contrôleur est accessible via $ ce-> contexte.

comme je l'ai déjà dit; PHP 5.4 rend la balise d'écho courte constamment disponible. Cela rend les vues qui consistent en php mixte et en HTML plus lisibles;

<span><span><?php
</span></span><span><span>$elements = array(1,2,3,4); //Yii 1.1
</span></span><span><span>$elements = [1,2,3,4]; //Yii 2.0
</span></span><span><span>?></span>
</span><span><span><?php echo $someVar; ?></span> //Yii 1.1
</span><span><span><?= $someVar ?></span> //always safe to use in Yii 2.0</span>
Copier après la connexion
Copier après la connexion

Les fonctions render () et renderPartial () ont également changé. Avant, il faisait écho à la sortie rendue automatiquement et vous devez ajouter un paramètre supplémentaire pour obtenir la sortie rendue en tant que chaîne. Yii 2.0 renvoie toujours une chaîne sur render () - comme les appels le rendant plus cohérent avec la façon dont les widgets se comportent.

Mise à niveau de YII 1.1

devriez-vous envisager de mettre à niveau votre application YII 1.1 à YII 2.0 dans le temps?

Bruno Škvorc a récemment écrit sur le code hérité ici sur SitePoint. Il soutient qu'une réécriture qui peut être effectuée en 2 mois devrait être envisagée - en particulier si le logiciel que vous utilisez est critique. Je suis d'accord avec lui et je vous suggère de le considérer si vous vous sentez sérieusement à propos de votre application et que vous souhaitez le maintenir au-delà de la fin de la vie de YII 1.1. Mais comme toujours; Cela dépend de votre situation.

Il existe une page spéciale dédiée à la mise à niveau de YII sur le site Web de YII. Le plus gros problème, pour l'instant, est vos extensions. Si vous comptez sur de nombreuses extensions, vous aurez du mal, car il faudra un certain temps pour que la communauté reprenne (re) la rédaction des extensions de YII 2.0. Si vous êtes un vrai pro, vous pourriez bien sûr jeter un coup d'œil sérieusement aux extensions que vous utilisez et envisager (re) les écrire.

Le manuel de migration a une section sur l'exécution de YII 1.1 et YII 2.0 dans une application. Pour les grands projets, c'est un bon moyen de créer un chemin de migration sûr. Migrez votre code générique vers YII 2.0 et prenez votre temps sur les pièces plus complexes ou remplies d'extension.

Conclusion

passer en revue le guide définitif de YII 2.0 me rend de plus en plus enthousiaste pour commencer avec yii 2.0. Je devais déjà m'empêcher de l'utiliser dans un nouveau projet parce que je ne pouvais pas risquer de problèmes avec le code de pré-production.

La qualité de la documentation pour YII 2.0 s'est améliorée par rapport à YII 1.1. J'ai eu du mal à comprendre des choses quand j'ai commencé avec yii 1.1 il y a quelques années et je pense que la documentation est plus étendue qu'auparavant.

Avez-vous déjà regardé Yii 2.0 ou peut-être même construit quelque chose avec? Veuillez nous dire ce que vous avez rencontré. J'aimerais connaître vos expériences!

Des questions fréquemment posées sur YII 2.0

Quelles sont les nouvelles fonctionnalités de YII 2.0 par rapport à ses versions précédentes?

YII 2.0 est livrée avec une multitude de nouvelles fonctionnalités et améliorations par rapport à ses prédécesseurs. Il prend désormais en charge l'utilisation d'espaces de noms, ce qui facilite l'organisation de code. Il introduit également un nouveau système de routage plus flexible et puissant. Les classes ActiveRecord ont été repensées pour prendre en charge davantage de types de bases de données, y compris les bases de données NoSQL. Le cadre comprend également un nouveau support de développement d'API RESTful, ce qui facilite la construction d'API. De plus, YII 2.0 a amélioré les fonctionnalités de sécurité, y compris la protection contre la contrefaçon de demande CSRF (demande inter-site).

Comment YII 2.0 gère-t-il l'internationalisation (I18N)?

YII 2.0 a un robuste Soutien de l'internationalisation (I18N). Il vous permet de stocker plusieurs traductions du même message dans différentes langues. Vous pouvez également formater les dates, les nombres et les devises en fonction du lieu. YII 2.0 prend également en charge les formulaires pluriels et la sélection de messages basés sur le contexte.

Qu'est-ce que le débogueur YII 2.0 et comment cela fonctionne-t-il?

Le débogueur YII 2.0 est un outil puissant qui vous aide à déboguer vos applications. Il recueille et affiche des informations sur chaque demande faite à votre application, y compris les requêtes SQL exécutées, les données de demande et de réponse et les données de synchronisation des performances. Vous pouvez accéder à ces informations via un panneau au bas des pages de votre application.

Comment puis-je étendre YII 2.0 avec des extensions tierces?

YII 2.0 prend en charge l'utilisation d'extensions tiers par tiers , qui peut être installé à l'aide du compositeur Package Manager. Une fois installé, vous pouvez utiliser ces extensions, tout comme les fonctionnalités intégrées de YII. La communauté YII a développé un large éventail d'extensions qui fournissent des fonctionnalités supplémentaires, telles que l'authentification des utilisateurs, la validation du formulaire et l'abstraction de la base de données.

Comment YII 2.0 gére-t-il les migrations de la base de données?

YII 2.0 fournit un puissant outil de migration de la base de données qui vous permet de contrôler les modifications de la base de données. Vous pouvez créer une nouvelle migration à l'aide de la commande YII MigRate / Create. Le script de migration contiendra des méthodes pour appliquer et retourner la migration. Vous pouvez ensuite appliquer la migration à l'aide de la commande yii migrate / up.

Comment YII 2.0 prend en charge le développement d'API Restful?

yii 2.0 fournit un ensemble d'outils pour vous aider à développer des API reposantes. Il comprend la prise en charge du routage, le traitement de la demande, le formatage de réponse et la gestion des erreurs. Vous pouvez également utiliser la classe ActiveController pour générer rapidement des actions Crud (créer, lire, mettre à jour, supprimer) pour votre API.

Comment YII 2.0 Gire-t-il la validation du formulaire?

YII 2.0 fournit un puissant Système de validation de la forme. Vous pouvez définir des règles de validation pour vos champs de formulaire dans la classe de modèle. Lorsqu'un formulaire est soumis, YII validera automatiquement les données d'entrée par rapport à ces règles et générera des messages d'erreur appropriés.

Comment YII 2.0 gère-t-il l'authentification de l'utilisateur?

YII 2.0 fournit un système d'authentification utilisateur flexible . Il prend en charge à la fois l'authentification traditionnelle du nom d'utilisateur / mot de passe et des méthodes plus modernes comme OAuth et OpenID. Vous pouvez également étendre le modèle utilisateur intégré pour ajouter vos propres méthodes d'authentification.

Comment YII 2.0 gère-t-il la gestion des erreurs et la journalisation?

YII 2.0 fournit un système de gestion des erreurs et de journalisation robuste. Il peut attraper et gérer à la fois les erreurs PHP et les exceptions. Les erreurs peuvent être enregistrées dans différents formats et envoyées à différentes destinations, telles que les fichiers, les e-mails et les navigateurs.

Comment puis-je tester mes applications YII 2.0?

yii 2.0 fournit un cadre de test Framework basé sur le phpunit et le sélénium. Il prend en charge les tests unitaires et les tests fonctionnels. Vous pouvez rédiger des cas de test pour tester vos modèles, vues et contrôleurs. Le framework de test fournit également des méthodes pour simuler les entrées des utilisateurs et vérifier la sortie.

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!

Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal