<li id="pdg8f"><meter id="pdg8f"></meter></li>
    BodyIdAttribute?>><\/p>

    最後,我想在主設(shè)定檔中加入以下內(nèi)容,讓Yii可以使用擴(kuò)充的View類,而不是預(yù)設(shè)的:<\/p>

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

    4、鼓勵(lì)測(cè)試<\/p>

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

    測(cè)試過程中,Codeception擴(kuò)充功能會(huì)使設(shè)定應(yīng)用程式變得更簡(jiǎn)單。只需簡(jiǎn)單提供\/tests\/_config.php文件,即可設(shè)定你的測(cè)試程式。例如:<\/p>

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

    使用該配置,將會(huì)發(fā)生以下幾種情況:<\/p>

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

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

    3、?測(cè)試將會(huì)使用你的測(cè)試資料庫,而不是你的產(chǎn)品資料庫。 <\/p>

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

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

    5、簡(jiǎn)化安全性<\/p>

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

    ·generatePasswordHash:?從一個(gè)密碼和隨機(jī)因子產(chǎn)生一個(gè)安全的單向雜湊函數(shù)。這個(gè)方法為你編譯了一個(gè)隨機(jī)因子,然後透過PHP?crypt函數(shù)功能提供的字串建立了一個(gè)單一項(xiàng)目雜湊函數(shù)。 <\/p>

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

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

    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。通過編輯你的主配置文件可以禁止此功能,方法如下:<\/p>

    return[\n    'components'=> [\n        'request'=> [\n            'enableCsrfValidation'=> false,\n        ]\n];<\/pre>

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

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

    這兩種授權(quán)方法,較簡(jiǎn)單的要數(shù)ACF了,它是通過在你的控制器中添加以下行為方法來實(shí)現(xiàn)的:<\/p>

    useyii\\filters\\AccessControl;\n \nclassDefaultController extendsController {\n    \/\/ ...\n    publicfunction behaviors() {\n        return[\n            \/\/ ...\n            'class'=> AccessControl::className(),\n            'only'=> ['create','login','view'],\n                'rules'=> [\n                [\n                    'allow'=> true,\n                    'actions'=> ['login','view'],\n                    'roles'=> ['?']\n                ],\n                [\n                    'allow'=> true,\n                    'actions'=> ['create'],\n                    'roles'=> ['@']\n                ]\n            ]\n        ];\n    }\n    \/\/ ...\n}<\/pre>

    上面的代碼用于區(qū)分DefaultControllerto,允許guest用戶的訪問login 和view行為,而不是create 行為。(? 是一個(gè)匿名用戶別名,@ 指的是已認(rèn)證用戶)。<\/p>

    RBAC是指那些用戶可以在整個(gè)應(yīng)用中執(zhí)行特定操作行為的更有效的方法。包括為用戶創(chuàng)建角色,定義app權(quán)限,然后使這些權(quán)限試用于相應(yīng)的角色。如果你想創(chuàng)建一個(gè)Moderator的角色,并允許分配給該角色的所有用戶批準(zhǔn)文章。<\/p>

    你也可以使用RBAC定義角色,它允許你在特定條件下,授權(quán)訪問應(yīng)用的某些方面的自定義規(guī)則。例如,你可以創(chuàng)建一個(gè)規(guī)則,即允許用戶編輯自己的文章,而不是那些其他人創(chuàng)建的。<\/p>

    6、縮短開發(fā)時(shí)間<\/p>

    大多數(shù)項(xiàng)目都會(huì)涉及一定的重復(fù)任務(wù),沒有人愿意浪費(fèi)時(shí)間。而Yii提供的一些工具可以幫助你減少在這些任務(wù)中所花費(fèi)的時(shí)間,將更多的時(shí)間用于定制讓客戶滿意的應(yīng)用。<\/p>

    在這些工具中,其中有一個(gè)名為“Gii”的工具最為強(qiáng)大。Gii是一個(gè)基于web的基架代碼工具,可以讓你快速創(chuàng)建代碼模板:<\/p>

    • ·模型<\/p><\/li>

    • ·控制器<\/p><\/li>

    • ·形式<\/p><\/li>

    • ·模塊<\/p><\/li>

    • ·擴(kuò)展<\/p><\/li>

    • ·CRUD控制器行為和視圖<\/p><\/li><\/ul>

      Gii是高度可配置的。你可以將其設(shè)置為僅在特定的環(huán)境下加載。只需簡(jiǎn)單編輯下你的web配置文件即可,方法如下:<\/p>

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

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

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

      \"為什麼我們要選擇yii框架\"\/<\/p>

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

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

      yii migrate\/create create_user_table<\/pre>

      這將會(huì)在 {appdir}\/migrations上創(chuàng)建一個(gè)新的遷移模板,看起來像這樣的:<\/p>

      所以我們可以說,我想添加在該表中再添加幾列。我只想添加以下內(nèi)容到up 方法中:<\/p>

      public function up()\n{\n    $this->createTable('user', [\n        'id' => Schema::TYPE_PK,\n        'username' => Schema::TYPE_STRING . ' NOT NULL',\n        'password_hash' => Schema:: TYPE_STRING . ' NOT NULL'\n    ], null);\n}<\/pre>

      然后,保證我可以反向遷移,下面我將添加down 方法:<\/p>

      public function down()\n{\n$this->dropTable('user');\n}<\/pre>

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

      .\/yii migrate<\/pre>

      然后移除該表:<\/p>

      .\/yii migrate\/down<\/pre>

      7、容易調(diào)整為最佳性能<\/p>

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

      所有Yii的緩存組件都是從yii\/caching\/Cache擴(kuò)展來的,你可以選擇任何一種,你想同時(shí)使用一個(gè)通用API擴(kuò)展的緩存系統(tǒng)。你甚至可以注冊(cè)多個(gè)高速緩存組件。Yii目前支持?jǐn)?shù)據(jù)庫和文件緩存,APC,Memcache, Redis, WinCache, XCache和Zend 數(shù)據(jù)緩存。<\/p>

      默認(rèn)情況下,如果你正在使用Active Record,然后Yii會(huì)運(yùn)行一個(gè)額外的查詢,來確定表參與生成模型的架構(gòu)。你可以通過編輯注配置文件設(shè)置應(yīng)用程序,從而緩存這些架構(gòu):<\/p>

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

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

      .\/yii asset\/template config.php<\/pre>

      然后,編輯該配置來指定工具,達(dá)到你想要的簡(jiǎn)化效果(如關(guān)閉編譯器, YUI Compressor,或UglifyJS)。生成的配置模板,如下所示:<\/p>

       'java -jar compiler.jar --js {from} --js_output_file {to}',\n        'cssCompressor' => 'java -jar yuicompressor.jar --type css {from} -o {to}',\n        'bundles' => [\n            \/\/ 'yii\\web\\YiiAsset',\n            \/\/ 'yii\\web\\JqueryAsset',\n        ],\n        'targets' => [\n            'app\\config\\AllAsset' => [\n                'basePath' => 'path\/to\/web',\n                'baseUrl' => '',\n                'js' => 'js\/all-{hash}.js',\n                'css' => 'css\/all-{hash}.css',\n            ],\n        ],\n        'assetManager' => [\n            'basePath' => __DIR__,\n            'baseUrl' => '',\n        ],\n    ];<\/pre>

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

      'components' => [\n    \/\/ ...\n    'assetManager' => [\n        'bundles' => require '\/app\/assets_compressed.php'\n    ]\n]<\/pre>

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

      結(jié)論:<\/p>\n

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

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

      首頁 php框架 YII 為什麼我們要選擇yii框架

      為什麼我們要選擇yii框架

      Nov 23, 2020 pm 04:58 PM
      yii 框架

      為什麼我們要選擇yii框架

      背景介紹:

      SitePoint曾發(fā)表過一篇文章,著重強(qiáng)調(diào)了一些頂級(jí)的PHP框架,當(dāng)時(shí)並列排名第四的是Yii(發(fā)音Yee)框架,最新版本為1.1.14。最近,Yii發(fā)布了2.0版本。

      (推薦教學(xué):yii

      然而我們對(duì)它進(jìn)行報(bào)導(dǎo)的時(shí)候,它還處在RC狀態(tài),如今剛好完整新版本發(fā)布,我覺得是時(shí)候重新考慮選擇它的因素了。

      選擇yii框架的七大理由:

      1、安裝簡(jiǎn)單

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

      Composer會(huì)來處理安裝程式。那如果你想要一個(gè)安裝過程的描述,Sitepoint最近發(fā)表了一篇關(guān)於此的文章,你可以參考以下。而我比較喜歡傾向於使用基本的應(yīng)用模板,即使我的網(wǎng)站上有一個(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;

      Yii也可以定義別名,來幫助簡(jiǎn)化你的命名空間。在上面的範(fàn)例中,use宣告會(huì)載入一個(gè)類別定義,目錄中的預(yù)設(shè)路徑為?/vendor/yiisoft/yii2/helpers。這個(gè)別名被定義在BaseYii類別中第79行:

      public static $aliases = [&#39;@yii&#39; => __DIR__];

      該框架本身是使用Composer安裝的,和它的擴(kuò)充一樣。發(fā)布擴(kuò)充功能的程式甚至和創(chuàng)建composer.json一樣簡(jiǎn)單,在Github上託管你的程式碼,並在Packagist上列出擴(kuò)充功能。 Yii也可以定義別名,來幫助簡(jiǎn)化你的命名空間。在上面的範(fàn)例中,use宣告會(huì)載入一個(gè)類別定義,目錄中的預(yù)設(shè)路徑為?/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中建立一個(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 !=&#39;&#39;) ?&#39;id="&#39; . $this->bodyId .&#39;"&#39; : &#39;&#39;;
          }
       
      }

      然後,在我的主佈局檔案(app\views\layouts\main.php)中,我想在HTML的body標(biāo)籤中補(bǔ)充以下內(nèi)容:
      BodyIdAttribute?>>

      最後,我想在主設(shè)定檔中加入以下內(nèi)容,讓Yii可以使用擴(kuò)充的View類,而不是預(yù)設(shè)的:

      return[
          // ...
          &#39;components&#39;=> [
              // ...
              &#39;view&#39;=> [
                  &#39;class&#39;=> &#39;app\components\View&#39;
              ]  
          ]
      ];

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

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

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

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

      使用該配置,將會(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è)試資料庫,而不是你的產(chǎn)品資料庫。

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

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

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

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

      ·generatePasswordHash:?從一個(gè)密碼和隨機(jī)因子產(chǎn)生一個(gè)安全的單向雜湊函數(shù)。這個(gè)方法為你編譯了一個(gè)隨機(jī)因子,然後透過PHP?crypt函數(shù)功能提供的字串建立了一個(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[
          &#39;components&#39;=> [
              &#39;request&#39;=> [
                  &#39;enableCsrfValidation&#39;=> 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)方法,較簡(jiǎn)單的要數(shù)ACF了,它是通過在你的控制器中添加以下行為方法來實(shí)現(xiàn)的:

      useyii\filters\AccessControl;
       
      classDefaultController extendsController {
          // ...
          publicfunction behaviors() {
              return[
                  // ...
                  &#39;class&#39;=> AccessControl::className(),
                  &#39;only&#39;=> [&#39;create&#39;,&#39;login&#39;,&#39;view&#39;],
                      &#39;rules&#39;=> [
                      [
                          &#39;allow&#39;=> true,
                          &#39;actions&#39;=> [&#39;login&#39;,&#39;view&#39;],
                          &#39;roles&#39;=> [&#39;?&#39;]
                      ],
                      [
                          &#39;allow&#39;=> true,
                          &#39;actions&#39;=> [&#39;create&#39;],
                          &#39;roles&#39;=> [&#39;@&#39;]
                      ]
                  ]
              ];
          }
          // ...
      }

      上面的代碼用于區(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[&#39;modules&#39;][&#39;gii&#39;] = [
              &#39;class&#39; => &#39;yii\gii\Module&#39;,
              &#39;allowedIPs&#39; => [&#39;127.0.0.1&#39;, &#39;::1&#39;]
          ]
      }

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

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

      為什麼我們要選擇yii框架

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

      還有幾個(gè)命令行工具可以幫你為你的自動(dòng)化測(cè)試創(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(&#39;user&#39;, [
              &#39;id&#39; => Schema::TYPE_PK,
              &#39;username&#39; => Schema::TYPE_STRING . &#39; NOT NULL&#39;,
              &#39;password_hash&#39; => Schema:: TYPE_STRING . &#39; NOT NULL&#39;
          ], null);
      }

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

      public function down()
      {
      $this->dropTable(&#39;user&#39;);
      }

      創(chuàng)建該表將會(huì)簡(jiǎn)單包括一個(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)。你甚至可以注冊(cè)多個(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 [
          // ...
          &#39;components&#39; => [
              // ...
              &#39;db&#39; => [
                  // ...
                  &#39;enableSchemaCache&#39; => true,
                  &#39;schemaCacheDuration&#39; => 3600,
                  &#39;schemaCache&#39; => &#39;cache&#39;,
              ],
              &#39;cache&#39; => [
                  &#39;class&#39; => &#39;yii\caching\FileCache&#39;,
              ],
          ],
      ];

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

      ./yii asset/template config.php

      然后,編輯該配置來指定工具,達(dá)到你想要的簡(jiǎn)化效果(如關(guān)閉編譯器, YUI Compressor,或UglifyJS)。生成的配置模板,如下所示:

      <?php
          return [
              &#39;jsCompressor&#39; => &#39;java -jar compiler.jar --js {from} --js_output_file {to}&#39;,
              &#39;cssCompressor&#39; => &#39;java -jar yuicompressor.jar --type css {from} -o {to}&#39;,
              &#39;bundles&#39; => [
                  // &#39;yii\web\YiiAsset&#39;,
                  // &#39;yii\web\JqueryAsset&#39;,
              ],
              &#39;targets&#39; => [
                  &#39;app\config\AllAsset&#39; => [
                      &#39;basePath&#39; => &#39;path/to/web&#39;,
                      &#39;baseUrl&#39; => &#39;&#39;,
                      &#39;js&#39; => &#39;js/all-{hash}.js&#39;,
                      &#39;css&#39; => &#39;css/all-{hash}.css&#39;,
                  ],
              ],
              &#39;assetManager&#39; => [
                  &#39;basePath&#39; => __DIR__,
                  &#39;baseUrl&#39; => &#39;&#39;,
              ],
          ];

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

      &#39;components&#39; => [
          // ...
          &#39;assetManager&#39; => [
              &#39;bundles&#39; => require &#39;/app/assets_compressed.php&#39;
          ]
      ]

      注意:你必須要手動(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)文章!

      本網(wǎng)站聲明
      本文內(nèi)容由網(wǎng)友自願(yuàn)投稿,版權(quán)歸原作者所有。本站不承擔(dān)相應(yīng)的法律責(zé)任。如發(fā)現(xiàn)涉嫌抄襲或侵權(quán)的內(nèi)容,請(qǐng)聯(lián)絡(luò)admin@php.cn

      熱AI工具

      Undress AI Tool

      Undress AI Tool

      免費(fèi)脫衣圖片

      Undresser.AI Undress

      Undresser.AI Undress

      人工智慧驅(qū)動(dòng)的應(yīng)用程序,用於創(chuàng)建逼真的裸體照片

      AI Clothes Remover

      AI Clothes Remover

      用於從照片中去除衣服的線上人工智慧工具。

      Clothoff.io

      Clothoff.io

      AI脫衣器

      Video Face Swap

      Video Face Swap

      使用我們完全免費(fèi)的人工智慧換臉工具,輕鬆在任何影片中換臉!

      熱工具

      記事本++7.3.1

      記事本++7.3.1

      好用且免費(fèi)的程式碼編輯器

      SublimeText3漢化版

      SublimeText3漢化版

      中文版,非常好用

      禪工作室 13.0.1

      禪工作室 13.0.1

      強(qiáng)大的PHP整合開發(fā)環(huán)境

      Dreamweaver CS6

      Dreamweaver CS6

      視覺化網(wǎng)頁開發(fā)工具

      SublimeText3 Mac版

      SublimeText3 Mac版

      神級(jí)程式碼編輯軟體(SublimeText3)

      熱門話題

      Laravel 教程
      1601
      29
      PHP教程
      1502
      276
      PHP 框架的學(xué)習(xí)曲線與其他語言框架相比如何? PHP 框架的學(xué)習(xí)曲線與其他語言框架相比如何? Jun 06, 2024 pm 12:41 PM

      PHP框架的學(xué)習(xí)曲線取決於語言熟練度、框架複雜性、文件品質(zhì)和社群支援。與Python框架相比,PHP框架的學(xué)習(xí)曲線較高,而與Ruby框架相比,則較低。與Java框架相比,PHP框架的學(xué)習(xí)曲線中等,但入門時(shí)間較短。

      php框架laravel和yii區(qū)別是什麼 php框架laravel和yii區(qū)別是什麼 Apr 30, 2025 pm 02:24 PM

      Laravel和Yii的主要區(qū)別在於設(shè)計(jì)理念、功能特性和使用場(chǎng)景。 1.Laravel注重開發(fā)的簡(jiǎn)潔和愉悅,提供豐富的功能如EloquentORM和Artisan工具,適合快速開發(fā)和初學(xué)者。 2.Yii強(qiáng)調(diào)性能和效率,適用於高負(fù)載應(yīng)用,提供高效的ActiveRecord和緩存系統(tǒng),但學(xué)習(xí)曲線較陡。

      PHP 框架的輕量級(jí)選項(xiàng)如何影響應(yīng)用程式效能? PHP 框架的輕量級(jí)選項(xiàng)如何影響應(yīng)用程式效能? Jun 06, 2024 am 10:53 AM

      輕量級(jí)PHP框架透過小體積和低資源消耗提升應(yīng)用程式效能。其特點(diǎn)包括:體積小,啟動(dòng)快,記憶體佔(zhàn)用低提升響應(yīng)速度和吞吐量,降低資源消耗實(shí)戰(zhàn)案例:SlimFramework創(chuàng)建RESTAPI,僅500KB,高響應(yīng)性、高吞吐量

      yii與Docker:容器化和部署您的應(yīng)用程序 yii與Docker:容器化和部署您的應(yīng)用程序 Apr 02, 2025 pm 02:13 PM

      使用Docker容器化和部署Yii應(yīng)用的步驟包括:1.創(chuàng)建Dockerfile,定義鏡像構(gòu)建過程;2.使用DockerCompose啟動(dòng)Yii應(yīng)用和MySQL數(shù)據(jù)庫;3.優(yōu)化鏡像大小和性能。這不僅涉及到具體的技術(shù)操作,還包括理解Dockerfile的工作原理和最佳實(shí)踐,以確保高效、可靠的部署。

      Golang框架學(xué)習(xí)過程中常見的迷思有哪些? Golang框架學(xué)習(xí)過程中常見的迷思有哪些? Jun 05, 2024 pm 09:59 PM

      Go框架學(xué)習(xí)的迷思有以下5種:過度依賴框架,限制彈性。不遵循框架約定,程式碼難以維護(hù)。使用過時(shí)庫,帶來安全和相容性問題。過度使用包,混淆程式碼結(jié)構(gòu)。忽視錯(cuò)誤處理,導(dǎo)致意外行為和崩潰。

      揭秘Java框架的常見故障疑慮 揭秘Java框架的常見故障疑慮 Jun 05, 2024 pm 09:37 PM

      常見Java框架故障疑慮:連線池故障:增加連線池大小或使用監(jiān)視工具解決連線池耗盡問題。 Hibernate惰性載入異常:在使用惰性載入實(shí)體之前明確初始化它們。 JSON映射錯(cuò)誤:驗(yàn)證資料類型和JSON格式的正確性。過濾器和攔截器配置問題:仔細(xì)檢查配置,確保預(yù)期工作方式。

      將Laravel項(xiàng)目遷移到Y(jié)II是否容易? 將Laravel項(xiàng)目遷移到Y(jié)II是否容易? May 09, 2025 am 12:01 AM

      crigatingalaravel projectToyiiishallingButachieffable withiefleflant.1)mapoutlaravel組件likeoutes,控制器和模型。 2)Translatelaravel's sartisancancancommandeloequorentoottooyii的giiandeteverecordeba

      YII開發(fā)人員:高級(jí)與初中 YII開發(fā)人員:高級(jí)與初中 May 24, 2025 am 12:10 AM

      資深Yii開發(fā)者與初級(jí)Yii開發(fā)者的主要區(qū)別在於經(jīng)驗(yàn)、技能深度和思維方式。 1.資深開發(fā)者關(guān)注性能優(yōu)化和代碼重構(gòu),使用Yii的緩存機(jī)制等提升應(yīng)用性能。 2.他們深入理解Yii的底層原理,參與架構(gòu)設(shè)計(jì)和技術(shù)決策,使用模塊化設(shè)計(jì)構(gòu)建靈活的應(yīng)用。 3.資深開發(fā)者註重項(xiàng)目整體規(guī)劃和長(zhǎng)遠(yuǎn)發(fā)展,扮演導(dǎo)師角色。初級(jí)開發(fā)者則需通過學(xué)習(xí)和實(shí)踐逐步提升,最終成長(zhǎng)為資深開發(fā)者。

      See all articles