91超碰碰碰碰久久久久久综合_超碰av人澡人澡人澡人澡人掠_国产黄大片在线观看画质优化_txt小说免费全本

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

為什么選擇yii框架

發布時間:2021-01-14 10:49:17 來源:億速云 閱讀:154 作者:小新 欄目:編程語言

小編給大家分享一下為什么選擇yii框架,相信大部分人都還不怎么了解,因此分享這篇文章給大家參考一下,希望大家閱讀完這篇文章后大有收獲,下面讓我們一起去了解一下吧!

選擇yii框架的七大理由:

1、安裝簡單

對Web開發者來說,時間就是金錢。沒有人會希望把自己的時間浪費在繁瑣的安裝和配置上。

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

注:后面的很多例子中的目錄引用都使用到了簡單模板的目錄結構。

2、使用現代技術

Yii是一個純粹的OOP框架,它充分利用了PHP一些較先進的功能,包括延遲靜態綁定,SPL類和接口,以及匿名函數。

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

use yii\helpers\Html;

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

public static $aliases = ['@yii' => __DIR__];

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

3、高度的可擴展性

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

首先,我會在我的app\components中創建一個名為View.php的文件,并添加以下內容:

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 .'"' : '';
    }
 
}

然后,在我的主布局文件(app\views\layouts\main.php)中,我想在HTML的body標簽中補充以下內容:
<body <?=$this->BodyIdAttribute?>>

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

return[
    // ...
    'components'=> [
        // ...
        'view'=> [
            'class'=> 'app\components\View'
        ]  
    ]
];

4、鼓勵測試

Yii與Codeception是緊密相連的。Codeception是一個了不起的PHP測試框架,有助于簡化應用創建部件、功能測試和驗收測試的過程。因為你寫的所有應用均是自動化測試,對吧?

測試過程中,Codeception擴展會使配置應用程序變得更簡單。只需簡單提供/tests/_config.php文件,即可配置你的測試程序。例如:

return[
    'components'=> [
        'mail'=> [
            'useFileTransport'=> true,
        ],
        'urlManager'=> [
            'showScriptName'=> true,
        ],
        'db'=> [
                'dsn'=> 'mysql:host=localhost;dbname=mysqldb_test',
        ],
    ],
];

使用該配置,將會發生如下幾種情況:

1、 在功能測試和驗收測試期間發送的任何一封郵件,將會被寫入一個文件中,而不是被發送。使用該配置,將會發生如下這種情況:

2、 在你測試中的URLs將會采取這種格式: index.php/controller/action 而不是這種:/controller/action

3、 測試將會使用你的測試數據庫,而不是你的產品數據庫。

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

$I->amOnPage('register');
$I->fillField('username','testuser');
$I->fillField('password','qwerty');
$I->click('Register');
$I->seeRecord('app\models\User',array('name'=> 'testuser'));

5、簡化安全性

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

·generatePasswordHash: 從一個密碼和隨機因子生成一個安全的單向散列函數。這種方法為你編譯了一個隨機因子,然后通過PHP crypt函數功能提供的字符串創建了一個單項散列函數。

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

·generateRandomKey:允許你創建一個任意長度的隨機字符串。

Yii會對所有不安全的HTTP請求方法(PUT,POST,DELETE)進行自動檢查,當你使用ActiveForm::begin()方法創建開放表單標簽時,它會生成并輸出一個token。通過編輯你的主配置文件可以禁止此功能,方法如下:

return[
    'components'=> [
        'request'=> [
            'enableCsrfValidation'=> false,
        ]
];

為了防止XSS,Yii提供了一個叫HtmlPurifier的輔助類。這個類有一個名為process的靜態方法,并且會使用popular filter library過濾出同名的輸出庫。

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

這兩種授權方法,較簡單的要數ACF了,它是通過在你的控制器中添加以下行為方法來實現的:

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'=> ['@']
                ]
            ]
        ];
    }
    // ...
}

上面的代碼用于區分DefaultControllerto,允許guest用戶的訪問login 和view行為,而不是create 行為。(? 是一個匿名用戶別名,@ 指的是已認證用戶)。

RBAC是指那些用戶可以在整個應用中執行特定操作行為的更有效的方法。包括為用戶創建角色,定義app權限,然后使這些權限試用于相應的角色。如果你想創建一個Moderator的角色,并允許分配給該角色的所有用戶批準文章。

你也可以使用RBAC定義角色,它允許你在特定條件下,授權訪問應用的某些方面的自定義規則。例如,你可以創建一個規則,即允許用戶編輯自己的文章,而不是那些其他人創建的。

6、縮短開發時間

大多數項目都會涉及一定的重復任務,沒有人愿意浪費時間。而Yii提供的一些工具可以幫助你減少在這些任務中所花費的時間,將更多的時間用于定制讓客戶滿意的應用。

在這些工具中,其中有一個名為“Gii”的工具最為強大。Gii是一個基于web的基架代碼工具,可以讓你快速創建代碼模板:

·模型

·控制器

·形式

·模塊

·擴展

·CRUD控制器行為和視圖

Gii是高度可配置的。你可以將其設置為僅在特定的環境下加載。只需簡單編輯下你的web配置文件即可,方法如下:

if (YII_ENV_DEV) {
    // ...
    $config['modules']['gii'] = [
        'class' => 'yii\gii\Module',
        'allowedIPs' => ['127.0.0.1', '::1']
    ]
}

這樣就可以確保黨Yii的環境設置為開發的時候,Gii僅支持加載,并且它只通過本地主機訪問時才會加載。

現在,讓我們來看下模型生成器吧:

為什么選擇yii框架

表名使用的是一個預輸入控件,來試圖猜測哪個表格與你的模型相關聯,并且所有領域都有一個翻轉工具,提示你如何填寫出來。在用Gii生成它之前,你可以預覽代碼,并且所有代碼模板是完全可以自定義的。

還有幾個命令行工具可以幫你為你的自動化測試創建數據庫遷移,信息翻譯(I18N:國際化)和數據庫fixtures 代碼模板。例如,你可以使用如下命令創建一個新的數據庫遷移文件:

yii migrate/create create_user_table

這將會在 {appdir}/migrations上創建一個新的遷移模板,看起來像這樣的:

<?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;
        }
}

所以我們可以說,我想添加在該表中再添加幾列。我只想添加以下內容到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');
}

創建該表將會簡單包括一個在運行在命令行的命令:

./yii migrate

然后移除該表:

./yii migrate/down

7、容易調整為最佳性能

大家都知道,一個網站很慢的話會很容易讓用戶產生不滿,所以Yii提供了幾種工具來幫助你從應用中“擠”出更多的速度。

所有Yii的緩存組件都是從yii/caching/Cache擴展來的,你可以選擇任何一種,你想同時使用一個通用API擴展的緩存系統。你甚至可以注冊多個高速緩存組件。Yii目前支持數據庫和文件緩存,APC,Memcache, Redis, WinCache, XCache和Zend 數據緩存。

默認情況下,如果你正在使用Active Record,然后Yii會運行一個額外的查詢,來確定表參與生成模型的架構。你可以通過編輯注配置文件設置應用程序,從而緩存這些架構:

return [
    // ...
    'components' => [
        // ...
        'db' => [
            // ...
            'enableSchemaCache' => true,
            'schemaCacheDuration' => 3600,
            'schemaCache' => 'cache',
        ],
        'cache' => [
            'class' => 'yii\caching\FileCache',
        ],
    ],
];

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

./yii asset/template config.php

然后,編輯該配置來指定工具,達到你想要的簡化效果(如關閉編譯器, 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' => '',
        ],
    ];

接著,運行此控制臺命令來實現壓縮:

'components' => [
    // ...
    'assetManager' => [
        'bundles' => require '/app/assets_compressed.php'
    ]
]

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

結論:

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

以上是“為什么選擇yii框架”這篇文章的所有內容,感謝各位的閱讀!相信大家都有了一定的了解,希望分享的內容對大家有所幫助,如果還想學習更多知識,歡迎關注億速云行業資訊頻道!

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

田林县| 通辽市| 平南县| 三门县| 贺州市| 沛县| 加查县| 迁安市| 双江| 庆云县| 务川| 西宁市| 岳西县| 吕梁市| 伊宁市| 都昌县| 潮州市| 内丘县| 凌海市| 枝江市| 六盘水市| 尼木县| 吉木乃县| 建阳市| 泽州县| 达尔| 麦盖提县| 宜宾县| 五莲县| 河间市| 特克斯县| 阆中市| 岳西县| 澄江县| 武冈市| 顺昌县| 阿坝县| 红桥区| 元谋县| 蓬莱市| 修文县|