国产av日韩一区二区三区精品,成人性爱视频在线观看,国产,欧美,日韩,一区,www.成色av久久成人,2222eeee成人天堂

首頁(yè) > php框架 > YII > 正文

選擇yii框架的理由是什么

王林
發(fā)布: 2020-09-03 15:56:46
轉(zhuǎn)載
2784人瀏覽過

選擇yii框架的理由是什么

選擇yii框架的七大理由:

(推薦教程:yii框架

1、安裝簡(jiǎn)單

對(duì)Web開發(fā)者來說,時(shí)間就是金錢。沒有人會(huì)希望把自己的時(shí)間浪費(fèi)在繁瑣的安裝和配置上。

Composer會(huì)來處理安裝程序。那如果你想要一個(gè)安裝過程的描述,Sitepoint最近發(fā)表了一篇關(guān)于此的文章,你可以參閱以下。而我比較喜歡傾向于使用基本的應(yīng)用模板,哪怕我的站點(diǎn)上有一個(gè)單獨(dú)的前端和后端組件。相反,我選擇在我站點(diǎn)的后端部分使用一個(gè)模塊。(Yii模塊是迷你應(yīng)用程序的最佳寫照,用來嵌入到你的主應(yīng)用程序中。)

注:后面的很多例子中的目錄引用都使用到了簡(jiǎn)單模板的目錄結(jié)構(gòu)。

2、使用現(xiàn)代技術(shù)

Yii是一個(gè)純粹的OOP框架,它充分利用了PHP一些較先進(jìn)的功能,包括延遲靜態(tài)綁定,SPL類和接口,以及匿名函數(shù)。

所有的類都被稱為命名空間,并允許你利用它們的PSR-4兼容的自動(dòng)加載機(jī)。也就是說,包括Yii中的HTML輔助類,也是同樣如此簡(jiǎn)單:

use yii\helpers\Html;
登錄后復(fù)制

Yii還可以定義別名,來幫助簡(jiǎn)化你的命名空間。在上面的例子中,use聲明會(huì)加載一個(gè)類定義,目錄中的默認(rèn)路徑為?/vendor/yiisoft/yii2/helpers。這個(gè)別名被定義在BaseYii類中第79行:

public static $aliases = ['@yii' => __DIR__];
登錄后復(fù)制

該框架本身是使用Composer安裝的,和它的擴(kuò)展一樣。發(fā)布擴(kuò)展的程序甚至和創(chuàng)建composer.json一樣簡(jiǎn)單,在Github上托管你的代碼,并在Packagist上列出擴(kuò)展。Yii還可以定義別名,來幫助簡(jiǎn)化你的命名空間。在上面的例子中,use聲明會(huì)加載一個(gè)類定義,目錄中的默認(rèn)路徑為?/vendor/yiisoft/yii2/helpers。這個(gè)別名被定義在BaseYii類中第79行:

3、高度的可擴(kuò)展性

Yii就像一套西裝,看起來很大,但其實(shí)卻很容易調(diào)整來滿足你的需求。實(shí)際上,框架的每個(gè)組件都是可擴(kuò)展的。舉一個(gè)簡(jiǎn)單的例子就是,在你的觀點(diǎn)上增加了一個(gè)獨(dú)特的body?ID。(如果想知道你為什么想這樣做,可以查看此文章)

首先,我會(huì)在我app\components中創(chuàng)建一個(gè)名為View.php的文件,并添加以下內(nèi)容:

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 .'"' : '';
    }
 
}
登錄后復(fù)制

然后,在我的主布局文件(app\views\layouts\main.php)中,我想在HTML的body標(biāo)簽中補(bǔ)充以下內(nèi)容:

BodyIdAttribute?>>

最后,我想在主配置文件中添加如下內(nèi)容,讓Yii可以使用擴(kuò)展的View類,而不是默認(rèn)的:

return[
    // ...
    'components'=> [
        // ...
        'view'=> [
            'class'=> 'app\components\View'
        ]  
    ]
];
登錄后復(fù)制

4、鼓勵(lì)測(cè)試

Yii與Codeception是緊密相連的。Codeception是一個(gè)了不起的PHP測(cè)試框架,有助于簡(jiǎn)化應(yīng)用創(chuàng)建部件、功能測(cè)試和驗(yàn)收測(cè)試的過程。因?yàn)槟銓懙乃袘?yīng)用均是自動(dòng)化測(cè)試,對(duì)吧?

測(cè)試過程中,Codeception擴(kuò)展會(huì)使配置應(yīng)用程序變得更簡(jiǎn)單。只需簡(jiǎn)單提供/tests/_config.php文件,即可配置你的測(cè)試程序。例如:

return[
    'components'=> [
        'mail'=> [
            'useFileTransport'=> true,
        ],
        'urlManager'=> [
            'showScriptName'=> true,
        ],
        'db'=> [
                'dsn'=> 'mysql:host=localhost;dbname=mysqldb_test',
        ],
    ],
];
登錄后復(fù)制

使用該配置,將會(huì)發(fā)生如下幾種情況:

1、?在功能測(cè)試和驗(yàn)收測(cè)試期間發(fā)送的任何一封郵件,將會(huì)被寫入一個(gè)文件中,而不是被發(fā)送。使用該配置,將會(huì)發(fā)生如下這種情況:

2、?在你測(cè)試中的URLs將會(huì)采取這種格式:?index.php/controller/action?而不是這種:/controller/action

3、?測(cè)試將會(huì)使用你的測(cè)試數(shù)據(jù)庫(kù),而不是你的產(chǎn)品數(shù)據(jù)庫(kù)。

存在Yii框架中的特殊模塊,同樣也存在Codeception內(nèi)。它TestGuy類中增加了幾個(gè)方法,協(xié)助你在功能測(cè)試中的活動(dòng)記錄(Yii中的ORM)。舉例來說,如果你想看看是否成功創(chuàng)建了一個(gè)用戶名為“testuser”的新user,你可以做以下幾點(diǎn):

$I->amOnPage('register');
$I->fillField('username','testuser');
$I->fillField('password','qwerty');
$I->click('Register');
$I->seeRecord('app\models\User',array('name'=> 'testuser'));
登錄后復(fù)制

5、簡(jiǎn)化安全性

安全性是任何一個(gè)web應(yīng)用的重要組成部分,幸運(yùn)的是,Yii有一些很棒的功能可以幫你解決這方面的煩惱。
Yii帶有一個(gè)安全應(yīng)用組件,其中公開的幾個(gè)方法可以幫助創(chuàng)建一個(gè)更安全的應(yīng)用。其中一些比較有用的方法如下:

·generatePasswordHash:?從一個(gè)密碼和隨機(jī)因子生成一個(gè)安全的單向散列函數(shù)。這種方法為你編譯了一個(gè)隨機(jī)因子,然后通過PHP?crypt函數(shù)功能提供的字符串創(chuàng)建了一個(gè)單項(xiàng)散列函數(shù)。

·validatePassword:對(duì)于generatePasswordHash,這是一個(gè)伴侶功能,并且允許你檢查用戶提供的密碼是否與你存儲(chǔ)的散列函數(shù)相匹配。

·generateRandomKey:允許你創(chuàng)建一個(gè)任意長(zhǎng)度的隨機(jī)字符串。

Yii會(huì)對(duì)所有不安全的HTTP請(qǐng)求方法(PUT,POST,DELETE)進(jìn)行自動(dòng)檢查,當(dāng)你使用ActiveForm::begin()方法創(chuàng)建開放表單標(biāo)簽時(shí),它會(huì)生成并輸出一個(gè)token。通過編輯你的主配置文件可以禁止此功能,方法如下:

return[
    'components'=> [
        'request'=> [
            'enableCsrfValidation'=> false,
        ]
];
登錄后復(fù)制

為了防止XSS,Yii提供了一個(gè)叫HtmlPurifier的輔助類。這個(gè)類有一個(gè)名為process的靜態(tài)方法,并且會(huì)使用popular?filter?library過濾出同名的輸出庫(kù)。

Yii還包括備用類,用來進(jìn)行用戶身份驗(yàn)證和授權(quán)。授權(quán)分為兩種類型:ACF(訪問控制過濾器)和RBAC(基于角色的訪問控制)。

這兩種授權(quán)方法,較簡(jiǎ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'=> ['@']
                ]
            ]
        ];
    }
    // ...
}
登錄后復(fù)制

上面的代碼用于區(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)境下加載。只需簡(jiǎn)單編輯下你的web配置文件即可,方法如下:

if (YII_ENV_DEV) {
    // ...
    $config['modules']['gii'] = [
        'class' => 'yii\gii\Module',
        'allowedIPs' => ['127.0.0.1', '::1']
    ]
}
登錄后復(fù)制

這樣就可以確保黨Yii的環(huán)境設(shè)置為開發(fā)的時(shí)候,Gii僅支持加載,并且它只通過本地主機(jī)訪問時(shí)才會(huì)加載。

現(xiàn)在,讓我們來看下模型生成器吧:


表名使用的是一個(gè)預(yù)輸入控件,來試圖猜測(cè)哪個(gè)表格與你的模型相關(guān)聯(lián),并且所有領(lǐng)域都有一個(gè)翻轉(zhuǎn)工具,提示你如何填寫出來。在用Gii生成它之前,你可以預(yù)覽代碼,并且所有代碼模板是完全可以自定義的。

還有幾個(gè)命令行工具可以幫你為你的自動(dòng)化測(cè)試創(chuàng)建數(shù)據(jù)庫(kù)遷移,信息翻譯(I18N:國(guó)際化)和數(shù)據(jù)庫(kù)fixtures?代碼模板。例如,你可以使用如下命令創(chuàng)建一個(gè)新的數(shù)據(jù)庫(kù)遷移文件:

yii migrate/create create_user_table
登錄后復(fù)制

這將會(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;
        }
}
登錄后復(fù)制

所以我們可以說,我想添加在該表中再添加幾列。我只想添加以下內(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);
}
登錄后復(fù)制

然后,保證我可以反向遷移,下面我將添加down?方法:

public function down()
{
$this->dropTable('user');
}
登錄后復(fù)制

創(chuàng)建該表將會(huì)簡(jiǎn)單包括一個(gè)在運(yùn)行在命令行的命令:

./yii migrate
登錄后復(fù)制

然后移除該表:

./yii migrate/down
登錄后復(fù)制

7、容易調(diào)整為最佳性能

大家都知道,一個(gè)網(wǎng)站很慢的話會(huì)很容易讓用戶產(chǎn)生不滿,所以Yii提供了幾種工具來幫助你從應(yīng)用中“擠”出更多的速度。

所有Yii的緩存組件都是從yii/caching/Cache擴(kuò)展來的,你可以選擇任何一種,你想同時(shí)使用一個(gè)通用API擴(kuò)展的緩存系統(tǒng)。你甚至可以注冊(cè)多個(gè)高速緩存組件。Yii目前支持?jǐn)?shù)據(jù)庫(kù)和文件緩存,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',
        ],
    ],
];
登錄后復(fù)制

最后,Yii有一個(gè)命令行工具,使前端資源極簡(jiǎn)化更容易。只需運(yùn)行以下命令來生成配置模板:

./yii asset/template config.php
登錄后復(fù)制

然后,編輯該配置來指定工具,達(dá)到你想要的簡(jiǎn)化效果(如關(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' => '',
        ],
    ];
登錄后復(fù)制

接著,運(yùn)行此控制臺(tái)命令來實(shí)現(xiàn)壓縮:

'components' => [
    // ...
    'assetManager' => [
        'bundles' => require '/app/assets_compressed.php'
    ]
]
登錄后復(fù)制

注意:你必須要手動(dòng)下載和安裝這些外部工具。

結(jié)論:

像任何一個(gè)好的框架一樣,Yii能夠幫助你快速創(chuàng)建流行的web應(yīng)用,并確保它們可以做的很好。通過做許多繁瑣的事情,它幫你你創(chuàng)建安全的和可測(cè)試的網(wǎng)站。你可以輕松的使用它提供的大部分功能,或者你也可以修改其中任何一個(gè)來適應(yīng)你的需求。真心建議你在你的下一個(gè)web項(xiàng)目中考慮一下它!

以上就是選擇yii框架的理由是什么的詳細(xì)內(nèi)容,更多請(qǐng)關(guān)注php中文網(wǎng)其它相關(guān)文章!

最佳 Windows 性能的頂級(jí)免費(fèi)優(yōu)化軟件
最佳 Windows 性能的頂級(jí)免費(fèi)優(yōu)化軟件

每個(gè)人都需要一臺(tái)速度更快、更穩(wěn)定的 PC。隨著時(shí)間的推移,垃圾文件、舊注冊(cè)表數(shù)據(jù)和不必要的后臺(tái)進(jìn)程會(huì)占用資源并降低性能。幸運(yùn)的是,許多工具可以讓 Windows 保持平穩(wěn)運(yùn)行。

下載
來源:csdn網(wǎng)
本文內(nèi)容由網(wǎng)友自發(fā)貢獻(xiàn),版權(quán)歸原作者所有,本站不承擔(dān)相應(yīng)法律責(zé)任。如您發(fā)現(xiàn)有涉嫌抄襲侵權(quán)的內(nèi)容,請(qǐng)聯(lián)系admin@php.cn
最新問題
開源免費(fèi)商場(chǎng)系統(tǒng)廣告
最新下載
更多>
網(wǎng)站特效
網(wǎng)站源碼
網(wǎng)站素材
前端模板
關(guān)于我們 免責(zé)申明 意見反饋 講師合作 廣告合作 最新更新
php中文網(wǎng):公益在線php培訓(xùn),幫助PHP學(xué)習(xí)者快速成長(zhǎng)!
關(guān)注服務(wù)號(hào) 技術(shù)交流群
PHP中文網(wǎng)訂閱號(hào)
每天精選資源文章推送
PHP中文網(wǎng)APP
隨時(shí)隨地碎片化學(xué)習(xí)
PHP中文網(wǎng)抖音號(hào)
發(fā)現(xiàn)有趣的

Copyright 2014-2025 http://m.miracleart.cn/ All Rights Reserved | php.cn | 湘ICP備2023035733號(hào)