Introduction au contexte?:
SitePoint a publié un article mettant en avant certains des meilleurs frameworks PHP (prononcé Yii) à l'époque, à égalité au quatrième rang, le Framework. la dernière version est la 1.1.14. Récemment, Yii a publié la version 2.0.
(Tutoriel recommandé?: yii)
Cependant, lorsque nous en avons rendu compte, il était toujours au statut RC, et maintenant la nouvelle version complète vient a été publié, je pense qu'il est temps de reconsidérer les facteurs qui entrent en ligne de compte dans son choix.
Sept raisons de choisir le framework yii?:
1. Installation facile
Pour les développeurs Web, le temps, c'est de l'argent. Personne ne veut perdre son temps dans une installation et une configuration fastidieuses.
Composer se chargera du processus d'installation. Eh bien, si vous souhaitez une description du processus d'installation, Sitepoint a récemment publié un article à ce sujet, que vous pouvez lire ci-dessous. Je préfère m'en tenir au modèle d'application de base même si j'ai un composant front-end et back-end distincts sur mon site. Au lieu de cela, j'ai choisi d'utiliser un module pour la partie backend de mon site. (Les modules Yii sont la meilleure représentation des mini-applications, con?ues pour être intégrées dans votre application principale.)
Remarque?: les références de répertoire dans de nombreux exemples ci-dessous utilisent la structure de répertoires d'un modèle simple.
2. Utiliser la technologie moderne
Yii est un framework POO pur qui utilise pleinement certaines des fonctionnalités les plus avancées de PHP, notamment la liaison statique retardée, les classes et interfaces SPL et les fonctions anonymes.
Toutes les classes sont dotées d'un espace de noms et vous permettent de profiter de leur chargeur automatique compatible PSR-4. En d'autres termes, inclure la classe auxiliaire HTML dans Yii est tout aussi simple?:
use yii\helpers\Html;
Yii peut également définir des alias pour vous aider à simplifier votre espace de noms. Dans l'exemple ci-dessus, l'instruction use chargera une définition de classe et le chemin par défaut dans le répertoire est /vendor/yiisoft/yii2/helpers. Cet alias est défini dans la classe BaseYii à la ligne 79 :
public static $aliases = ['@yii' => __DIR__];
Le framework lui-même est installé à l'aide de Composer, comme ses extensions. Publier une extension est aussi simple que de créer un composer.json, d'héberger votre code sur Github et de répertorier l'extension sur Packagist. Yii peut également définir des alias pour simplifier votre espace de noms. Dans l'exemple ci-dessus, l'instruction use chargera une définition de classe et le chemin par défaut dans le répertoire est /vendor/yiisoft/yii2/helpers. Cet alias est défini à la ligne 79 de la classe BaseYii?:
3. Haute évolutivité
Yii est comme un costume, il a l'air grand, mais il est en fait facile à ajuster. Répondez à vos besoins. Pratiquement tous les composants du framework sont extensibles. Un exemple simple consiste à ajouter un identifiant de corps unique à votre vue. (Si vous voulez savoir pourquoi vous voulez faire cela, vous pouvez consulter cet article)
Tout d'abord, je vais créer un fichier appelé View.php dans mes composants d'application et ajouter le contenu suivant?:
namespaceapp\components; classView extendsyii\web\View { public$bodyId; /* Yii allows you to add magic getter methods by prefacing method names with "get" */ publicfunction getBodyIdAttribute() { return($this->bodyId !='') ?'id="' . $this->bodyId .'"' : ''; } }
Ensuite, dans mon fichier de mise en page principal (appviewslayoutsmain.php), je souhaite ajouter ce qui suit dans la balise body du HTML?:
Enfin, je souhaite ajouter le contenu suivant au fichier de configuration principal afin que Yii puisse utiliser la classe View étendue au lieu de celle par défaut?:
return[ // ... 'components'=> [ // ... 'view'=> [ 'class'=> 'app\components\View' ] ] ];
4. Encouragez les tests
<. ??> Yii et Codeception sont étroitement liés. Codeception est un incroyable framework de test PHP qui permet de simplifier le processus de création de widgets, de tests fonctionnels et de tests d'acceptation pour votre application. Parce que chaque application que vous écrivez est un test automatisé, n'est-ce pas?? L'extension Codeception facilitera la configuration de votre application lors des tests. Fournissez simplement le fichier /tests/_config.php pour configurer votre programme de test. Par exemple?:return[ 'components'=> [ 'mail'=> [ 'useFileTransport'=> true, ], 'urlManager'=> [ 'showScriptName'=> true, ], 'db'=> [ 'dsn'=> 'mysql:host=localhost;dbname=mysqldb_test', ], ], ];En utilisant cette configuration, les situations suivantes se produiront?: 1. Tout e-mail envoyé lors des tests fonctionnels et des tests d'acceptation sera écrit dans un fichier au lieu d'être envoyé. En utilisant cette configuration, ce qui suit se produira?: 2. Les URL de vos tests seront dans ce format?: index.php/controller/action au lieu de ceci?: /controller/action3 . Le test utilisera votre base de données de test, pas votre base de données produit. Existe dans des modules spéciaux dans le framework Yii et existe également dans Codeception. Il ajoute plusieurs méthodes à la classe TestGuy pour vous aider à enregistrer les activités lors des tests fonctionnels (ORM dans Yii). Par exemple, si vous voulez voir si un nouvel utilisateur avec le nom d'utilisateur "testuser" a été créé avec succès, vous pouvez procéder comme suit?:
$I->amOnPage('register'); $I->fillField('username','testuser'); $I->fillField('password','qwerty'); $I->click('Register'); $I->seeRecord('app\models\User',array('name'=> 'testuser'));5. Simplifiez la sécurité Sécurité Le sexe est un élément important fait partie de toute application Web et, heureusement, Yii propose des fonctionnalités intéressantes pour vous aider dans ce domaine.
Yii est livré avec un composant d'application sécurisé, qui expose plusieurs méthodes pour aider à créer une application plus sécurisée. Certaines des méthodes les plus utiles sont les suivantes?:
·validatePassword:對于generatePasswordHash,這是一個(gè)伴侶功能,并且允許你檢查用戶提供的密碼是否與你存儲的散列函數(shù)相匹配。
·generateRandomKey:允許你創(chuàng)建一個(gè)任意長度的隨機(jī)字符串。
Yii會(huì)對所有不安全的HTTP請求方法(PUT,POST,DELETE)進(jìn)行自動(dòng)檢查,當(dāng)你使用ActiveForm::begin()方法創(chuàng)建開放表單標(biāo)簽時(shí),它會(huì)生成并輸出一個(gè)token。通過編輯你的主配置文件可以禁止此功能,方法如下:
return[ 'components'=> [ 'request'=> [ 'enableCsrfValidation'=> false, ] ];
為了防止XSS,Yii提供了一個(gè)叫HtmlPurifier的輔助類。這個(gè)類有一個(gè)名為process的靜態(tài)方法,并且會(huì)使用popular filter library過濾出同名的輸出庫。
Yii還包括備用類,用來進(jìn)行用戶身份驗(yàn)證和授權(quán)。授權(quán)分為兩種類型:ACF(訪問控制過濾器)和RBAC(基于角色的訪問控制)。
這兩種授權(quán)方法,較簡單的要數(shù)ACF了,它是通過在你的控制器中添加以下行為方法來實(shí)現(xiàn)的:
useyii\filters\AccessControl; classDefaultController extendsController { // ... publicfunction behaviors() { return[ // ... 'class'=> AccessControl::className(), 'only'=> ['create','login','view'], 'rules'=> [ [ 'allow'=> true, 'actions'=> ['login','view'], 'roles'=> ['?'] ], [ 'allow'=> true, 'actions'=> ['create'], 'roles'=> ['@'] ] ] ]; } // ... }
上面的代碼用于區(qū)分DefaultControllerto,允許guest用戶的訪問login 和view行為,而不是create 行為。(? 是一個(gè)匿名用戶別名,@ 指的是已認(rèn)證用戶)。
RBAC是指那些用戶可以在整個(gè)應(yīng)用中執(zhí)行特定操作行為的更有效的方法。包括為用戶創(chuàng)建角色,定義app權(quán)限,然后使這些權(quán)限試用于相應(yīng)的角色。如果你想創(chuàng)建一個(gè)Moderator的角色,并允許分配給該角色的所有用戶批準(zhǔn)文章。
你也可以使用RBAC定義角色,它允許你在特定條件下,授權(quán)訪問應(yīng)用的某些方面的自定義規(guī)則。例如,你可以創(chuàng)建一個(gè)規(guī)則,即允許用戶編輯自己的文章,而不是那些其他人創(chuàng)建的。
6、縮短開發(fā)時(shí)間
大多數(shù)項(xiàng)目都會(huì)涉及一定的重復(fù)任務(wù),沒有人愿意浪費(fèi)時(shí)間。而Yii提供的一些工具可以幫助你減少在這些任務(wù)中所花費(fèi)的時(shí)間,將更多的時(shí)間用于定制讓客戶滿意的應(yīng)用。
在這些工具中,其中有一個(gè)名為“Gii”的工具最為強(qiáng)大。Gii是一個(gè)基于web的基架代碼工具,可以讓你快速創(chuàng)建代碼模板:
·模型
·控制器
·形式
·模塊
·擴(kuò)展
·CRUD控制器行為和視圖
Gii是高度可配置的。你可以將其設(shè)置為僅在特定的環(huán)境下加載。只需簡單編輯下你的web配置文件即可,方法如下:
if (YII_ENV_DEV) { // ... $config['modules']['gii'] = [ 'class' => 'yii\gii\Module', 'allowedIPs' => ['127.0.0.1', '::1'] ] }
這樣就可以確保黨Yii的環(huán)境設(shè)置為開發(fā)的時(shí)候,Gii僅支持加載,并且它只通過本地主機(jī)訪問時(shí)才會(huì)加載。
現(xiàn)在,讓我們來看下模型生成器吧:
表名使用的是一個(gè)預(yù)輸入控件,來試圖猜測哪個(gè)表格與你的模型相關(guān)聯(lián),并且所有領(lǐng)域都有一個(gè)翻轉(zhuǎn)工具,提示你如何填寫出來。在用Gii生成它之前,你可以預(yù)覽代碼,并且所有代碼模板是完全可以自定義的。
還有幾個(gè)命令行工具可以幫你為你的自動(dòng)化測試創(chuàng)建數(shù)據(jù)庫遷移,信息翻譯(I18N:國際化)和數(shù)據(jù)庫fixtures 代碼模板。例如,你可以使用如下命令創(chuàng)建一個(gè)新的數(shù)據(jù)庫遷移文件:
yii migrate/create create_user_table
這將會(huì)在 {appdir}/migrations上創(chuàng)建一個(gè)新的遷移模板,看起來像這樣的:
<?php use yii\db\Schema; class m140924_153425_create_user_table extends \yii\db\Migration { public function up() { } public function down() { echo "m140924_153425_create_user_table cannot be reverted.\n"; return false; } }
所以我們可以說,我想添加在該表中再添加幾列。我只想添加以下內(nèi)容到up 方法中:
public function up() { $this->createTable('user', [ 'id' => Schema::TYPE_PK, 'username' => Schema::TYPE_STRING . ' NOT NULL', 'password_hash' => Schema:: TYPE_STRING . ' NOT NULL' ], null); }
然后,保證我可以反向遷移,下面我將添加down 方法:
public function down() { $this->dropTable('user'); }
創(chuàng)建該表將會(huì)簡單包括一個(gè)在運(yùn)行在命令行的命令:
./yii migrate
然后移除該表:
./yii migrate/down
7、容易調(diào)整為最佳性能
大家都知道,一個(gè)網(wǎng)站很慢的話會(huì)很容易讓用戶產(chǎn)生不滿,所以Yii提供了幾種工具來幫助你從應(yīng)用中“擠”出更多的速度。
所有Yii的緩存組件都是從yii/caching/Cache擴(kuò)展來的,你可以選擇任何一種,你想同時(shí)使用一個(gè)通用API擴(kuò)展的緩存系統(tǒng)。你甚至可以注冊多個(gè)高速緩存組件。Yii目前支持?jǐn)?shù)據(jù)庫和文件緩存,APC,Memcache, Redis, WinCache, XCache和Zend 數(shù)據(jù)緩存。
默認(rèn)情況下,如果你正在使用Active Record,然后Yii會(huì)運(yùn)行一個(gè)額外的查詢,來確定表參與生成模型的架構(gòu)。你可以通過編輯注配置文件設(shè)置應(yīng)用程序,從而緩存這些架構(gòu):
return [ // ... 'components' => [ // ... 'db' => [ // ... 'enableSchemaCache' => true, 'schemaCacheDuration' => 3600, 'schemaCache' => 'cache', ], 'cache' => [ 'class' => 'yii\caching\FileCache', ], ], ];
最后,Yii有一個(gè)命令行工具,使前端資源極簡化更容易。只需運(yùn)行以下命令來生成配置模板:
./yii asset/template config.php
然后,編輯該配置來指定工具,達(dá)到你想要的簡化效果(如關(guān)閉編譯器, YUI Compressor,或UglifyJS)。生成的配置模板,如下所示:
<?php return [ 'jsCompressor' => 'java -jar compiler.jar --js {from} --js_output_file {to}', 'cssCompressor' => 'java -jar yuicompressor.jar --type css {from} -o {to}', 'bundles' => [ // 'yii\web\YiiAsset', // 'yii\web\JqueryAsset', ], 'targets' => [ 'app\config\AllAsset' => [ 'basePath' => 'path/to/web', 'baseUrl' => '', 'js' => 'js/all-{hash}.js', 'css' => 'css/all-{hash}.css', ], ], 'assetManager' => [ 'basePath' => __DIR__, 'baseUrl' => '', ], ];
接著,運(yùn)行此控制臺命令來實(shí)現(xiàn)壓縮:
'components' => [ // ... 'assetManager' => [ 'bundles' => require '/app/assets_compressed.php' ] ]
注意:你必須要手動(dòng)下載和安裝這些外部工具。
結(jié)論:
像任何一個(gè)好的框架一樣,Yii能夠幫助你快速創(chuàng)建流行的web應(yīng)用,并確保它們可以做的很好。通過做許多繁瑣的事情,它幫你你創(chuàng)建安全的和可測試的網(wǎng)站。你可以輕松的使用它提供的大部分功能,或者你也可以修改其中任何一個(gè)來適應(yīng)你的需求。真心建議你在你的下一個(gè)web項(xiàng)目中考慮一下它!
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!

Outils d'IA chauds

Undress AI Tool
Images de déshabillage gratuites

Undresser.AI Undress
Application basée sur l'IA pour créer des photos de nu réalistes

AI Clothes Remover
Outil d'IA en ligne pour supprimer les vêtements des photos.

Clothoff.io
Dissolvant de vêtements AI

Video Face Swap
échangez les visages dans n'importe quelle vidéo sans effort grace à notre outil d'échange de visage AI entièrement gratuit?!

Article chaud

Outils chauds

Bloc-notes++7.3.1
éditeur de code facile à utiliser et gratuit

SublimeText3 version chinoise
Version chinoise, très simple à utiliser

Envoyer Studio 13.0.1
Puissant environnement de développement intégré PHP

Dreamweaver CS6
Outils de développement Web visuel

SublimeText3 version Mac
Logiciel d'édition de code au niveau de Dieu (SublimeText3)

La courbe d'apprentissage d'un framework PHP dépend de la ma?trise du langage, de la complexité du framework, de la qualité de la documentation et du support de la communauté. La courbe d'apprentissage des frameworks PHP est plus élevée par rapport aux frameworks Python et inférieure par rapport aux frameworks Ruby. Par rapport aux frameworks Java, les frameworks PHP ont une courbe d'apprentissage modérée mais un temps de démarrage plus court.

Les principales différences entre Laravel et YII sont les concepts de conception, les caractéristiques fonctionnelles et les scénarios d'utilisation. 1.Laravel se concentre sur la simplicité et le plaisir du développement, et offre des fonctions riches telles que Elognentorm et des outils artisanaux, adaptés au développement rapide et aux débutants. 2.YII met l'accent sur les performances et l'efficacité, convient aux applications à haute charge et fournit des systèmes activecord et de cache efficaces, mais a une courbe d'apprentissage abrupte.

Le framework PHP léger améliore les performances des applications grace à une petite taille et une faible consommation de ressources. Ses fonctionnalités incluent : une petite taille, un démarrage rapide, une faible utilisation de la mémoire, une vitesse de réponse et un débit améliorés et une consommation de ressources réduite. Cas pratique : SlimFramework crée une API REST, seulement 500 Ko, une réactivité élevée et un débit élevé.

Les étapes de conteneris et de déploiement des applications YII à l'aide de Docker incluent: 1. Créez un DockerFile et définissez le processus de création d'images; 2. Utilisez DockerCose pour lancer les applications YII et la base de données MySQL; 3. Optimiser la taille et les performances de l'image. Cela implique non seulement des opérations techniques spécifiques, mais aussi de comprendre les principes de travail et les meilleures pratiques de Dockerfile pour assurer un déploiement efficace et fiable.

Il existe cinq malentendus dans l'apprentissage du framework Go?: une dépendance excessive à l'égard du framework et une flexibilité limitée. Si vous ne respectez pas les conventions du framework, le code sera difficile à maintenir. L'utilisation de bibliothèques obsolètes peut entra?ner des problèmes de sécurité et de compatibilité. L'utilisation excessive de packages obscurcit la structure du code. Ignorer la gestion des erreurs entra?ne un comportement inattendu et des plantages.

MigrantAlaravel ProjectToyiiishallingButachieffable Withiefleflant.1) MapoutLaravel Component component likeroutes, contr?lers et models.2)

La principale différence entre les développeurs YII seniors et les développeurs Junior YII est l'expérience, la profondeur des compétences et la fa?on de penser. 1. Les développeurs seniors prêtent attention à l'optimisation des performances et à la reconstruction du code et utilisent le mécanisme de cache de Yii pour améliorer les performances des applications. 2. Ils comprennent profondément les principes sous-jacents de YII, participent à la conception architecturale et à la prise de décision technique et utilisent la conception modulaire pour créer des applications flexibles. 3. Les développeurs seniors prêtent attention à la planification globale du projet et au développement à long terme et jouent le r?le de mentor. Les développeurs juniors doivent s'améliorer progressivement par l'apprentissage et la pratique, et éventuellement devenir des développeurs seniors.

Les compétences clés que les développeurs européennes YII doivent posséder comprennent: 1. YII Framework Proficies, 2. PHP Profile, 3. Database Management, 4. Front-End Skills, 5. Restful API Development, 6. Version Control System, 7. Testing and Debugging, 8. Security Knowledge, 9. Agile Methodology, 10. Soft Skills, 11. Localisation et internationalisation, 12. Continuet Apprentinet, ces compétences mettent en scène le commerce européen.
