<tbody id="zdfnk"></tbody>
  1. <cite id="zdfnk"></cite>
     BodyIdAttribute?><\/span><\/span>><\/span><\/span><\/pre>YII與編碼療法緊密地集成在一起。 CodeCeption是一個很好的PHP測試框架,可幫助簡化為應(yīng)用程序創(chuàng)建單元,功能和接受測試的過程。因為您正在為所有應(yīng)用程序編寫自動測試,對嗎? 

    \n\n\n

    \n\n<\/p>使用此配置,以下情況將發(fā)生:

    \n<\/p>\n

    return [\n<\/span>    \/\/ ...\n<\/span>    'components' => [\n<\/span>        \/\/ ...\n<\/span>        'view' => [\n<\/span>            'class' => 'app\\components\\View'\n<\/span>        ]   \n<\/span>    ]\n<\/span>];<\/span><\/pre>>在您的功能和接受測試期間發(fā)送的任何電子郵件都會寫入文件而不是發(fā)送。 

    \n測試中的URL將採用格式index.php\/Controller\/Action而不是\/Controller\/Action <\/p>\n

      您的測試將使用您的測試數(shù)據(jù)庫,而不是您的生產(chǎn)數(shù)據(jù)庫。\n
    1. \n<\/li>> YII框架的特殊模塊也內(nèi)部也存在。它為TestGuy類添加了幾種方法,這些方法可幫助您在功能測試中使用主動記錄(YII ORM)。例如,如果您想查看使用用戶名“ testuser”成功創(chuàng)建了新用戶的註冊表格,則可以執(zhí)行以下操作:
    2. \n\n\n<\/li>\n\n\n\n
    3. 5。簡化了安全性<\/li>\n<\/ol>安全性是任何Web應(yīng)用程序的關(guān)鍵部分,幸運的是,YII具有一些很棒的功能來幫助您減輕您的思維。\n

      YII帶有一個安全應(yīng)用程序組件,該組件揭示了幾種方法,以幫助創(chuàng)建更安全的應(yīng)用程序。一些更有用的方法是:<\/p>\n

        \n
      • 生成Passwordhash:從密碼和隨機(jī)鹽中生成安全的哈希。此方法為您製作一個隨機(jī)鹽,然後使用PHP的crypt功能從提供的字符串中創(chuàng)建一個哈希。 <\/li>\n
      • > ValidatePassword:這是生成Passwordhash的伴奏函數(shù),並允許您檢查用戶提供的密碼是否匹配您存儲的哈希。\n<\/li> generaterandomkey:允許您創(chuàng)建任何長度的隨機(jī)字符串
      • \n<\/li>\n在所有不安全的HTTP請求方法(put,post,post,delete)上,<\/ul> yii自動檢查有效的CSRF令牌,並在使用activeform :: begin Form(begin Form(:begin)方法創(chuàng)建打開表單標(biāo)籤時,將生成並輸出令牌。可以通過編輯主配置文件來禁用此功能以包含以下內(nèi)容:

        >\n\n<\/p>\n\n為了保護(hù)XSS,YII提供了另一個稱為HTMLPurifier的幫助者類。該類具有一個名為“進(jìn)程”的單個靜態(tài)方法,並將使用同名流行的過濾器庫過濾您的輸出。

        use yii\\helpers\\Html<\/span>;<\/span><\/pre>\n

        yii還包括用於用戶身份驗證和授權(quán)的現(xiàn)成類。授權(quán)分為兩種類型:ACF(訪問控製過濾器)和RBAC(基於角色的訪問控制)。\n<\/p>兩者的簡單是ACF,可以通過在控制器的行為方法中添加以下以下方法來實現(xiàn):

        \n\n<\/p>\n\n

        >前面的代碼告訴DefaultControllerTo允許訪客用戶訪問登錄名並查看操作,但不能訪問Create Action。 (?是針對匿名用戶的別名, @是指身份驗證的用戶)。 <\/p>>\nRBAC是一種更強大的方法,可以指定用戶可以在整個應(yīng)用程序中執(zhí)行特定操作。它涉及為您的用戶創(chuàng)建角色,為您的應(yīng)用程序定義權(quán)限,然後為其預(yù)期的角色啟用這些權(quán)限。如果您想創(chuàng)建主持人角色,並且允許分配給此角色的所有用戶批準(zhǔn)文章,則可以使用此方法。

        public static $aliases = ['@yii' => __DIR__];<\/span><\/pre>\n

        >您還可以使用RBAC定義規(guī)則,RBAC允許您在特定條件下授予對應(yīng)用程序某些方面的訪問權(quán)限。例如,您可以創(chuàng)建一個規(guī)則,該規(guī)則允許用戶編輯自己的文章,而不是由他人創(chuàng)建的文章。\n<\/p>6??s短開發(fā)時間

        \n<\/p>大多數(shù)項目都涉及一定數(shù)量的重複任務(wù),這些任務(wù)沒有人浪費時間。 YII為我們提供了一些工具,可以幫助您更少的時間在這些任務(wù)上,並有更多的時間自定義您的應(yīng)用程序以適應(yīng)客戶的需求。

        \n這些工具中最強大的工具之一稱為“ GII”。 GII是一種基於Web的代碼腳手架工具,它允許您快速創(chuàng)建代碼模板:>\n<\/ancy><\/p>\n

        >模型<\/h2>\n

        控制器<\/p>\n

        表格<\/p>\n

          模塊
        • \n<\/li>擴(kuò)展
        • \n<\/li>> CRUD控制器動作和視圖
        • \n<\/li>\nGII高度可配置。您可以將其設(shè)置為僅在某些環(huán)境中加載。只需按以下方式編輯Web配置文件:
        • \n
          use yii\\helpers\\Html<\/span>;<\/span><\/pre>\n\n

          這可以確保GII只有在將YII環(huán)境變量設(shè)置為>開發(fā)<\/em>>時才加載,並且只有在通過Localhost訪問時才加載。 <\/p>\n

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

          \"選擇YII\n<\/p>>該表名稱使用打字機(jī)窗口小部件來猜測您的模型與哪個表相關(guān)聯(lián),並且所有字段都有一個翻轉(zhuǎn)工具提示,以提醒您如何填寫它們。您可以在要求GII生成它之前預(yù)覽代碼,並且所有代碼模板都是完全可自定義的。\n

          >還有幾種命令行工具可幫助創(chuàng)建用於數(shù)據(jù)庫遷移,消息翻譯(I18N)和數(shù)據(jù)庫固定裝置的代碼模板,以進(jìn)行自動測試。例如,您可以使用此命令創(chuàng)建一個新的數(shù)據(jù)庫遷移文件:\n\n<\/ancy><\/p>\n\n

          這將在{appdir}\/遷移中創(chuàng)建一個新的遷移模板,該模板看起來像這樣:<\/p>>\n\n

          public static $aliases = ['@yii' => __DIR__];<\/span><\/pre>\n\n

          >所以我想在此表中添加幾列。我只需將以下內(nèi)容添加到UP方法:<\/p>>\n\n\n

          namespace app\\components<\/span>;\n<\/span>\nclass View extends yii\\web\\View<\/span> {\n<\/span>\n    public $bodyId;\n<\/span>\n    \/* Yii allows you to add magic getter methods by prefacing method names with \"get\" *\/\n<\/span>\n    public function getBodyIdAttribute() {\n<\/span>        return ($this->bodyId != '') ? '' : '';\n<\/span>    }\n<\/span>\n}<\/span><\/pre>\n\n

          ,然後確保我可以扭轉(zhuǎn)遷移,我將編輯下調(diào)方法:>\n\n<\/ancy><\/p>\n\n

          
          

          亚洲国产日韩欧美一区二区三区,精品亚洲国产成人av在线,国产99视频精品免视看7,99国产精品久久久久久久成人热,欧美日韩亚洲国产综合乱

          BodyIdAttribute?><\/span><\/span>><\/span><\/span><\/pre>創(chuàng)建表僅涉及在命令行上運行命令:>\n\n

          \n\n<\/p>並刪除表:

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

          \n\n<\/p>7。易於調(diào)整以獲得更好的性能

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

          >每個人都知道一個慢速的網(wǎng)站會創(chuàng)建不滿的用戶,因此yii為您提供了幾種工具,可以幫助您擠出更快的速度。 <\/p>\n

          $I->amOnPage('register');\n<\/span>$I->fillField('username', 'testuser');\n<\/span>$I->fillField('password', 'qwerty');\n<\/span>$I->click('Register');\n<\/span>$I->seeRecord('app\\models\\User', array('name' => 'testuser'));<\/span><\/pre>>所有YII的緩存組件從YII\/緩存\/緩存延伸,它使您可以在使用常見API時選擇所需的任何緩存系統(tǒng)。您甚至可以同時註冊多個緩存組件。 YII當(dāng)前支持?jǐn)?shù)據(jù)庫和文件系統(tǒng)緩存,以及APC,memcache,redis,wincache,Xcache和Zend Data Cache。\n

          默認(rèn)情況下,如果您使用的是活動記錄,則YII會運行額外的查詢,以確定生成模型所涉及的表格架構(gòu)。您可以通過編輯主配置文件來設(shè)置應(yīng)用程序來緩存這些架構(gòu):<\/h2>>\n\n

          \n\n<\/p>>最後,YII有一個命令行工具來促進(jìn)前端資產(chǎn)的縮小。只需運行以下命令即可生成配置模板:

          \n\n<\/p>\n\n

          然後編輯配置以指定您要執(zhí)行的縮小工具(例如,閉合編譯器,YUI壓縮機(jī)或uglifyjs)。生成的配置模板將看起來像這樣:<\/p>>\n\n

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

          接下來,運行此控制臺命令以執(zhí)行壓縮。 <\/p>\n\n

          use yii\\filters\\AccessControl<\/span>;\n<\/span>\nclass DefaultController extends Controller {\n<\/span>    \/\/ ...\n<\/span>    public function behaviors() {\n<\/span>        return [\n<\/span>            \/\/ ...\n<\/span>            'class' => AccessControl::<\/span>className(),\n<\/span>            'only' => ['create', 'login', 'view'],\n<\/span>                'rules' => [\n<\/span>                [\n<\/span>                    'allow' => true,\n<\/span>                    'actions' => ['login', 'view'],\n<\/span>                    'roles' => ['?']\n<\/span>                ],\n<\/span>                [\n<\/span>                    'allow' => true,\n<\/span>                    'actions' => ['create'],\n<\/span>                    'roles' => ['@']\n<\/span>                ]\n<\/span>            ]\n<\/span>        ];\n<\/span>    }\n<\/span>    \/\/ ...\n<\/span>}<\/span><\/pre>\n\n

          >最後,編輯您的Web應(yīng)用程序配置文件以使用壓縮資產(chǎn)。\n\n<\/p>\n\n

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

          注意:<\/p>>您必須手動下載並安裝這些外部工具。

          yii migrate\/create create_user_table<\/span><\/pre>>

          結(jié)論<\/h2>\n

          >像任何好的框架一樣,yii可以幫助您快速創(chuàng)建現(xiàn)代的Web應(yīng)用程序,並確保它們的表現(xiàn)良好。它推動您通過為您做很多繁重的舉重來創(chuàng)建安全和可測試的站點。您可以完全按照提供的方式輕鬆地使用其大多數(shù)功能,也可以修改每個功能以滿足您的需求。我真的鼓勵您檢查一下您的下一個網(wǎng)絡(luò)項目! <\/p>\n

          您嘗試過yii 2嗎?你會?讓我們知道! <\/p>\n\n\n\n

          經(jīng)常詢問有關(guān)yii 2框架<\/h2>的問題(常見問題解答)\n\n\n\n

          >為什麼YII 2框架被認(rèn)為是高度擴(kuò)展的? <\/h3>\n

          yii 2框架被認(rèn)為是高度擴(kuò)展的,因為它允許開發(fā)人員自定義核心代碼的幾乎每個部分。這意味著,如果開發(fā)人員需要調(diào)整框架處理某些任務(wù)的方式,則可以執(zhí)行此操作,而無需直接修改核心代碼。這是一個重要的優(yōu)勢,因為它允許具有高度的靈活性和適應(yīng)性,因此更容易量身定制框架以滿足特定的項目要求。 <\/ancii><\/p> yii 2框架如何確保高性能? > YII 2框架通過其有效的懶惰加載技術(shù)確保高性能。這意味著它僅加載特定過程所需的組件,從而減少服務(wù)器上的負(fù)載並改善應(yīng)用程序的整體性能。此外,YII 2還支持?jǐn)?shù)據(jù)緩存,這進(jìn)一步增強了其性能。

          ><\/h3>是什麼使YII 2框架成為Web開發(fā)的安全選擇?

          <\/p>\n

          yii 2框架框架具有強大的安全功能,內(nèi)置了其核心的強大安全功能。它提供內(nèi)置工具,用於輸入驗證,輸出過濾,SQL注入預(yù)防和跨站點腳本(XSS)預(yù)防。這些功能使其成為開發(fā)需要處理敏感數(shù)據(jù)的Web應(yīng)用程序的安全選擇。 <\/h3>>

          yii 2框架如何支持快速開發(fā)? <\/ancy><\/p>\n

          yii 2框架通過其強大的代碼生成來支持快速開發(fā)工具,GII。 GII允許開發(fā)人員快速為模型,控制器,表單,模塊和擴(kuò)展程序生成代碼。這大大減少了編寫樣板代碼所需的時間,使開發(fā)人員可以更多地專注於業(yè)務(wù)邏輯。 <\/h3>

          我可以使用yii 2 Framework使用第三方代碼嗎?旨在與第三方代碼無縫合作。它使用Composer Dependenty Manager,這使得將第三方庫和軟件包集成到您的YII 2應(yīng)用程序中變得易於。 <\/p>>

          > yii 2框架如何處理錯誤和異常?具有全面的錯誤處理和記錄系統(tǒng)。它可以處理PHP錯誤和異常,並提供各種記錄目標(biāo),包括文件,電子郵件和瀏覽器控制臺。這使得更容易調(diào)試和解決您的應(yīng)用程序中的問題。 <\/h3>>

          > yii 2框架適合開發(fā)複雜的Web應(yīng)用程序嗎?它提供了一系列工具和功能,例如MVC架構(gòu),數(shù)據(jù)庫抽象層和緩存支持,這些工具和功能使構(gòu)建和維護(hù)複雜的應(yīng)用程序變得更加容易。 <\/ancii>\n<\/h3>> yii 2 Framework如何支持國際化?

          YII 2框架為國際化(I18N)提供了廣泛的支持。它包括日期和時間格式,數(shù)字格式和消息翻譯的功能,使為全球受眾開發(fā)應(yīng)用程序變得更加容易。 <\/p>

          yii 2框架可用哪種社區(qū)支持? > YII 2框架有一個大型而活躍的開發(fā)人員社區(qū)。在線提供許多論壇,博客和教程,您可以在其中找到幫助和建議。此外,官方Y(jié)II網(wǎng)站還提供了全面的文檔和用戶指南。 <\/h3>\n

          > yii 2框架如何與其他PHP框架進(jìn)行比較? <\/ancy><\/p>\n

          yii 2框架因其高框架而脫穎而出。性能,安全功能和可擴(kuò)展性。它還支持快速發(fā)展,使其成為小型和大型項目的流行選擇。但是,項目的最佳框架取決於開發(fā)團(tuán)隊的特定要求和專業(yè)知識。<\/h3><\/ancy><\/ancy>\n<\/li>\n<\/ul><\/ancepection>\n<\/h2><\/ance>"}
          目錄
          :以後示例中的許多目錄參考使用簡單模板中的目錄結(jié)構(gòu)。
          >模型
          默認(rèn)情況下,如果您使用的是活動記錄,則YII會運行額外的查詢,以確定生成模型所涉及的表格架構(gòu)。您可以通過編輯主配置文件來設(shè)置應(yīng)用程序來緩存這些架構(gòu):
          結(jié)論
          經(jīng)常詢問有關(guān)yii 2框架
          >為什麼YII 2框架被認(rèn)為是高度擴(kuò)展的?
          >
          yii 2框架框架具有強大的安全功能,內(nèi)置了其核心的強大安全功能。它提供內(nèi)置工具,用於輸入驗證,輸出過濾,SQL注入預(yù)防和跨站點腳本(XSS)預(yù)防。這些功能使其成為開發(fā)需要處理敏感數(shù)據(jù)的Web應(yīng)用程序的安全選擇。
          yii 2框架通過其強大的代碼生成來支持快速開發(fā)工具,GII。 GII允許開發(fā)人員快速為模型,控制器,表單,模塊和擴(kuò)展程序生成代碼。這大大減少了編寫樣板代碼所需的時間,使開發(fā)人員可以更多地專注於業(yè)務(wù)邏輯。
          > yii 2框架如何處理錯誤和異常?具有全面的錯誤處理和記錄系統(tǒng)。它可以處理PHP錯誤和異常,並提供各種記錄目標(biāo),包括文件,電子郵件和瀏覽器控制臺。這使得更容易調(diào)試和解決您的應(yīng)用程序中的問題。
          yii 2框架可用哪種社區(qū)支持? > YII 2框架有一個大型而活躍的開發(fā)人員社區(qū)。在線提供許多論壇,博客和教程,您可以在其中找到幫助和建議。此外,官方Y(jié)II網(wǎng)站還提供了全面的文檔和用戶指南。
          yii 2框架因其高框架而脫穎而出。性能,安全功能和可擴(kuò)展性。它還支持快速發(fā)展,使其成為小型和大型項目的流行選擇。但是,項目的最佳框架取決於開發(fā)團(tuán)隊的特定要求和專業(yè)知識。
          首頁 後端開發(fā) php教程 選擇YII 2框架的7個理由

          選擇YII 2框架的7個理由

          Feb 19, 2025 am 09:37 AM

          選擇YII 2框架的7個理由

          去年年底,SitePoint發(fā)表了一篇文章,重點介紹了頂級PHP框架。並列第四個位置是YII(發(fā)音為 yee

          )框架。當(dāng)時,可用的最新版本為1.1.14。最近,YII 2.0可用,因此您可以開始在生產(chǎn)中使用它。 > >當(dāng)我們最近在RC狀態(tài)處於RC狀態(tài)時確實介紹了它,但它剛剛達(dá)到了完整的發(fā)布狀態(tài),我們覺得是時候以某些原因來重新訪問該主題。 鑰匙要點

          > yii 2框架很容易安裝,使用Composer處理的直接安裝和配置過程節(jié)省了開發(fā)人員的時間。

          >該框架利用現(xiàn)代技術(shù),作為純OOP框架運行,並利用高級PHP功能,例如晚期靜態(tài)綁定,SPL類和接口和匿名功能。
            yii 2是高度擴(kuò)展的,幾乎可以自定義框架的每個組件以滿足特定的需求。
          • >該框架鼓勵測試,與編碼療法緊密整合,一個PHP測試框架,簡化了創(chuàng)建單元,功能和接受測試的過程。
          • yii 2用其安全應(yīng)用程序組件簡化了安全性,該組件公開了幾種方法來幫助創(chuàng)建安全應(yīng)用程序。它還包括用於用戶身份驗證和授權(quán)的現(xiàn)成類。
          • >
          • 1。易於安裝
          • 對於網(wǎng)絡(luò)開發(fā)人員來說,時間是金錢,沒有人願意將寶貴的時間花在復(fù)雜的安裝和配置過程上。
          • >使用作曲家處理安裝。如果您想對安裝過程進(jìn)行描述,SitePoint最近在此處發(fā)表了一篇很棒的文章。即使我的網(wǎng)站具有單獨的前端和後端組件,我也傾向於使用基本的應(yīng)用模板。相反,我選擇在我的站點的後端部分使用一個模塊。 (最好將YII模塊描述為位於主要應(yīng)用程序內(nèi)的迷你應(yīng)用程序)。
          • >
          • >
          note

          :以後示例中的許多目錄參考使用簡單模板中的目錄結(jié)構(gòu)。

          2。利用現(xiàn)代技術(shù)

          YII是一個純粹的OOP框架,並利用了PHP的一些更高級功能,包括晚期靜態(tài)綁定,SPL類和接口和匿名功能。

          >所有類都是命名的,這使您可以利用其兼容PSR-4的自動加載器。這意味著,包括YII的HTML助手類包括:>

          > yii還允許您定義別名以幫助簡化您的名稱空間。在上面的示例中,該使用語句將加載一個類定義,該類別默認(rèn)位於目錄/供應(yīng)商/yiisoft/yii2/helpers中。 該別名在第79行的基本級課程中定義
          <span>use yii<span>\helpers\Html</span>;</span>

          >框架本身是使用作曲家以及其擴(kuò)展名安裝的。甚至發(fā)布擴(kuò)展的過程也很容易,就像創(chuàng)建自己的作曲家。

          3。高度擴(kuò)展

          yii就像一件外觀,看起來很棒,但也很容易量身定制以滿足您的需求。實際上,框架的每個組件都是可擴(kuò)展的。一個簡單的例子是在您的觀點中增加了獨特的身體ID。 (如果您有興趣知道為什麼要這樣做,請看一下這篇文章)。

          首先,我將在我的appComponents目錄中創(chuàng)建一個使用name viev.php的文件,然後添加以下內(nèi)容:

          >

          然後,在我的主佈局文件(appviewslayoutsmain.php)中,我將以下內(nèi)容添加到我的html的主體標(biāo)籤中:

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

          >最後,我將以下內(nèi)容添加到我的主要配置文件中,以便讓yii知道使用我的擴(kuò)展視圖類,而不是其自己的默認(rèn)值:

          <span>namespace app<span>\components</span>;
          </span>
          <span>class View extends yii<span>\web\View</span> {
          </span>
              <span>public $bodyId;
          </span>
              <span>/* Yii allows you to add magic getter methods by prefacing method names with "get" */
          </span>
              <span>public function getBodyIdAttribute() {
          </span>        <span>return ($this->bodyId != '') ? '' : '';
          </span>    <span>}
          </span>
          <span>}</span>

          4。鼓勵測試

          <span><span><span><body</span> <span><span><?=$this->BodyIdAttribute?></span></span>></span></span>
          YII與編碼療法緊密地集成在一起。 CodeCeption是一個很好的PHP測試框架,可幫助簡化為應(yīng)用程序創(chuàng)建單元,功能和接受測試的過程。因為您正在為所有應(yīng)用程序編寫自動測試,對嗎?

          使用此配置,以下情況將發(fā)生:

          <span>return [
          </span>    <span>// ...
          </span>    <span>'components' => [
          </span>        <span>// ...
          </span>        <span>'view' => [
          </span>            <span>'class' => 'app\components\View'
          </span>        <span>]   
          </span>    <span>]
          </span><span>];</span>
          >在您的功能和接受測試期間發(fā)送的任何電子郵件都會寫入文件而不是發(fā)送。

          測試中的URL將採用格式index.php/Controller/Action而不是/Controller/Action

            您的測試將使用您的測試數(shù)據(jù)庫,而不是您的生產(chǎn)數(shù)據(jù)庫。
          1. > YII框架的特殊模塊也內(nèi)部也存在。它為TestGuy類添加了幾種方法,這些方法可幫助您在功能測試中使用主動記錄(YII ORM)。例如,如果您想查看使用用戶名“ testuser”成功創(chuàng)建了新用戶的註冊表格,則可以執(zhí)行以下操作:
          2. 5。簡化了安全性
          安全性是任何Web應(yīng)用程序的關(guān)鍵部分,幸運的是,YII具有一些很棒的功能來幫助您減輕您的思維。

          YII帶有一個安全應(yīng)用程序組件,該組件揭示了幾種方法,以幫助創(chuàng)建更安全的應(yīng)用程序。一些更有用的方法是:

          • 生成Passwordhash:從密碼和隨機(jī)鹽中生成安全的哈希。此方法為您製作一個隨機(jī)鹽,然後使用PHP的crypt功能從提供的字符串中創(chuàng)建一個哈希。
          • > ValidatePassword:這是生成Passwordhash的伴奏函數(shù),並允許您檢查用戶提供的密碼是否匹配您存儲的哈希。
          • generaterandomkey:允許您創(chuàng)建任何長度的隨機(jī)字符串
          • 在所有不安全的HTTP請求方法(put,post,post,delete)上,
          yii自動檢查有效的CSRF令牌,並在使用activeform :: begin Form(begin Form(:begin)方法創(chuàng)建打開表單標(biāo)籤時,將生成並輸出令牌??梢酝ㄟ^編輯主配置文件來禁用此功能以包含以下內(nèi)容:

          >

          為了保護(hù)XSS,YII提供了另一個稱為HTMLPurifier的幫助者類。該類具有一個名為“進(jìn)程”的單個靜態(tài)方法,並將使用同名流行的過濾器庫過濾您的輸出。
          <span>use yii<span>\helpers\Html</span>;</span>

          yii還包括用於用戶身份驗證和授權(quán)的現(xiàn)成類。授權(quán)分為兩種類型:ACF(訪問控製過濾器)和RBAC(基於角色的訪問控制)。

          兩者的簡單是ACF,可以通過在控制器的行為方法中添加以下以下方法來實現(xiàn):

          >前面的代碼告訴DefaultControllerTo允許訪客用戶訪問登錄名並查看操作,但不能訪問Create Action。 (?是針對匿名用戶的別名, @是指身份驗證的用戶)。

          > RBAC是一種更強大的方法,可以指定用戶可以在整個應(yīng)用程序中執(zhí)行特定操作。它涉及為您的用戶創(chuàng)建角色,為您的應(yīng)用程序定義權(quán)限,然後為其預(yù)期的角色啟用這些權(quán)限。如果您想創(chuàng)建主持人角色,並且允許分配給此角色的所有用戶批準(zhǔn)文章,則可以使用此方法。
          <span>public static $aliases = ['@yii' => __DIR__];</span>

          >您還可以使用RBAC定義規(guī)則,RBAC允許您在特定條件下授予對應(yīng)用程序某些方面的訪問權(quán)限。例如,您可以創(chuàng)建一個規(guī)則,該規(guī)則允許用戶編輯自己的文章,而不是由他人創(chuàng)建的文章。

          6??s短開發(fā)時間

          大多數(shù)項目都涉及一定數(shù)量的重複任務(wù),這些任務(wù)沒有人浪費時間。 YII為我們提供了一些工具,可以幫助您更少的時間在這些任務(wù)上,並有更多的時間自定義您的應(yīng)用程序以適應(yīng)客戶的需求。

          這些工具中最強大的工具之一稱為“ GII”。 GII是一種基於Web的代碼腳手架工具,它允許您快速創(chuàng)建代碼模板:>

          >模型

          控制器

          表格

            模塊
          • 擴(kuò)展
          • > CRUD控制器動作和視圖
          • GII高度可配置。您可以將其設(shè)置為僅在某些環(huán)境中加載。只需按以下方式編輯Web配置文件:
          • <span>use yii<span>\helpers\Html</span>;</span>

            這可以確保GII只有在將YII環(huán)境變量設(shè)置為>開發(fā)>時才加載,並且只有在通過Localhost訪問時才加載。

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

            選擇YII 2框架的7個理由

            >該表名稱使用打字機(jī)窗口小部件來猜測您的模型與哪個表相關(guān)聯(lián),並且所有字段都有一個翻轉(zhuǎn)工具提示,以提醒您如何填寫它們。您可以在要求GII生成它之前預(yù)覽代碼,並且所有代碼模板都是完全可自定義的。

            >還有幾種命令行工具可幫助創(chuàng)建用於數(shù)據(jù)庫遷移,消息翻譯(I18N)和數(shù)據(jù)庫固定裝置的代碼模板,以進(jìn)行自動測試。例如,您可以使用此命令創(chuàng)建一個新的數(shù)據(jù)庫遷移文件:

            這將在{appdir}/遷移中創(chuàng)建一個新的遷移模板,該模板看起來像這樣:

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

            >所以我想在此表中添加幾列。我只需將以下內(nèi)容添加到UP方法:

            >
            <span>namespace app<span>\components</span>;
            </span>
            <span>class View extends yii<span>\web\View</span> {
            </span>
                <span>public $bodyId;
            </span>
                <span>/* Yii allows you to add magic getter methods by prefacing method names with "get" */
            </span>
                <span>public function getBodyIdAttribute() {
            </span>        <span>return ($this->bodyId != '') ? '' : '';
            </span>    <span>}
            </span>
            <span>}</span>

            ,然後確保我可以扭轉(zhuǎn)遷移,我將編輯下調(diào)方法:>

            <span><span><span><body</span> <span><span><?=$this->BodyIdAttribute?></span></span>></span></span>
            創(chuàng)建表僅涉及在命令行上運行命令:>

            並刪除表:
            <span>return [
            </span>    <span>// ...
            </span>    <span>'components' => [
            </span>        <span>// ...
            </span>        <span>'view' => [
            </span>            <span>'class' => 'app\components\View'
            </span>        <span>]   
            </span>    <span>]
            </span><span>];</span>

            7。易於調(diào)整以獲得更好的性能
            <span>return [
            </span>    <span>'components' => [
            </span>        <span>'mail' => [
            </span>            <span>'useFileTransport' => true,
            </span>        <span>],
            </span>        <span>'urlManager' => [
            </span>            <span>'showScriptName' => true,
            </span>        <span>],
            </span>        <span>'db' => [
            </span>                <span>'dsn' => 'mysql:host=localhost;dbname=mysqldb_test',
            </span>        <span>],
            </span>    <span>],
            </span><span>];</span>

            >每個人都知道一個慢速的網(wǎng)站會創(chuàng)建不滿的用戶,因此yii為您提供了幾種工具,可以幫助您擠出更快的速度。

            <span>$I->amOnPage('register');
            </span><span>$I->fillField('username', 'testuser');
            </span><span>$I->fillField('password', 'qwerty');
            </span><span>$I->click('Register');
            </span><span>$I->seeRecord('app\models\User', array('name' => 'testuser'));</span>
            >所有YII的緩存組件從YII/緩存/緩存延伸,它使您可以在使用常見API時選擇所需的任何緩存系統(tǒng)。您甚至可以同時註冊多個緩存組件。 YII當(dāng)前支持?jǐn)?shù)據(jù)庫和文件系統(tǒng)緩存,以及APC,memcache,redis,wincache,Xcache和Zend Data Cache。

            默認(rèn)情況下,如果您使用的是活動記錄,則YII會運行額外的查詢,以確定生成模型所涉及的表格架構(gòu)。您可以通過編輯主配置文件來設(shè)置應(yīng)用程序來緩存這些架構(gòu):

            >

            >最後,YII有一個命令行工具來促進(jìn)前端資產(chǎn)的縮小。只需運行以下命令即可生成配置模板:

            然後編輯配置以指定您要執(zhí)行的縮小工具(例如,閉合編譯器,YUI壓縮機(jī)或uglifyjs)。生成的配置模板將看起來像這樣:

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

            接下來,運行此控制臺命令以執(zhí)行壓縮。

            <span>use yii<span>\filters\AccessControl</span>;
            </span>
            <span>class DefaultController extends Controller {
            </span>    <span>// ...
            </span>    <span>public function behaviors() {
            </span>        <span>return [
            </span>            <span>// ...
            </span>            <span>'class' => AccessControl<span>::</span>className(),
            </span>            <span>'only' => ['create', 'login', 'view'],
            </span>                <span>'rules' => [
            </span>                <span>[
            </span>                    <span>'allow' => true,
            </span>                    <span>'actions' => ['login', 'view'],
            </span>                    <span>'roles' => ['?']
            </span>                <span>],
            </span>                <span>[
            </span>                    <span>'allow' => true,
            </span>                    <span>'actions' => ['create'],
            </span>                    <span>'roles' => ['@']
            </span>                <span>]
            </span>            <span>]
            </span>        <span>];
            </span>    <span>}
            </span>    <span>// ...
            </span><span>}</span>

            >最後,編輯您的Web應(yīng)用程序配置文件以使用壓縮資產(chǎn)。

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

            注意:

            >您必須手動下載並安裝這些外部工具。
            yii migrate<span>/create create_user_table</span>
            >

            結(jié)論

            >像任何好的框架一樣,yii可以幫助您快速創(chuàng)建現(xiàn)代的Web應(yīng)用程序,並確保它們的表現(xiàn)良好。它推動您通過為您做很多繁重的舉重來創(chuàng)建安全和可測試的站點。您可以完全按照提供的方式輕鬆地使用其大多數(shù)功能,也可以修改每個功能以滿足您的需求。我真的鼓勵您檢查一下您的下一個網(wǎng)絡(luò)項目!

            您嘗試過yii 2嗎?你會?讓我們知道!

            經(jīng)常詢問有關(guān)yii 2框架

            的問題(常見問題解答)

            >為什麼YII 2框架被認(rèn)為是高度擴(kuò)展的?

            yii 2框架被認(rèn)為是高度擴(kuò)展的,因為它允許開發(fā)人員自定義核心代碼的幾乎每個部分。這意味著,如果開發(fā)人員需要調(diào)整框架處理某些任務(wù)的方式,則可以執(zhí)行此操作,而無需直接修改核心代碼。這是一個重要的優(yōu)勢,因為它允許具有高度的靈活性和適應(yīng)性,因此更容易量身定制框架以滿足特定的項目要求。

            yii 2框架如何確保高性能? > YII 2框架通過其有效的懶惰加載技術(shù)確保高性能。這意味著它僅加載特定過程所需的組件,從而減少服務(wù)器上的負(fù)載並改善應(yīng)用程序的整體性能。此外,YII 2還支持?jǐn)?shù)據(jù)緩存,這進(jìn)一步增強了其性能。

            >

            是什麼使YII 2框架成為Web開發(fā)的安全選擇?

            yii 2框架框架具有強大的安全功能,內(nèi)置了其核心的強大安全功能。它提供內(nèi)置工具,用於輸入驗證,輸出過濾,SQL注入預(yù)防和跨站點腳本(XSS)預(yù)防。這些功能使其成為開發(fā)需要處理敏感數(shù)據(jù)的Web應(yīng)用程序的安全選擇。

            >

            yii 2框架如何支持快速開發(fā)?

            yii 2框架通過其強大的代碼生成來支持快速開發(fā)工具,GII。 GII允許開發(fā)人員快速為模型,控制器,表單,模塊和擴(kuò)展程序生成代碼。這大大減少了編寫樣板代碼所需的時間,使開發(fā)人員可以更多地專注於業(yè)務(wù)邏輯。

            我可以使用yii 2 Framework使用第三方代碼嗎?旨在與第三方代碼無縫合作。它使用Composer Dependenty Manager,這使得將第三方庫和軟件包集成到您的YII 2應(yīng)用程序中變得易於。

            >

            > yii 2框架如何處理錯誤和異常?具有全面的錯誤處理和記錄系統(tǒng)。它可以處理PHP錯誤和異常,並提供各種記錄目標(biāo),包括文件,電子郵件和瀏覽器控制臺。這使得更容易調(diào)試和解決您的應(yīng)用程序中的問題。

            >

            > yii 2框架適合開發(fā)複雜的Web應(yīng)用程序嗎?它提供了一系列工具和功能,例如MVC架構(gòu),數(shù)據(jù)庫抽象層和緩存支持,這些工具和功能使構(gòu)建和維護(hù)複雜的應(yīng)用程序變得更加容易。

            > yii 2 Framework如何支持國際化?

            YII 2框架為國際化(I18N)提供了廣泛的支持。它包括日期和時間格式,數(shù)字格式和消息翻譯的功能,使為全球受眾開發(fā)應(yīng)用程序變得更加容易。

            yii 2框架可用哪種社區(qū)支持? > YII 2框架有一個大型而活躍的開發(fā)人員社區(qū)。在線提供許多論壇,博客和教程,您可以在其中找到幫助和建議。此外,官方Y(jié)II網(wǎng)站還提供了全面的文檔和用戶指南。

            > yii 2框架如何與其他PHP框架進(jìn)行比較?

            yii 2框架因其高框架而脫穎而出。性能,安全功能和可擴(kuò)展性。它還支持快速發(fā)展,使其成為小型和大型項目的流行選擇。但是,項目的最佳框架取決於開發(fā)團(tuán)隊的特定要求和專業(yè)知識。

          以上是選擇YII 2框架的7個理由的詳細(xì)內(nèi)容。更多資訊請關(guān)注PHP中文網(wǎng)其他相關(guān)文章!

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

          熱AI工具

          Undress AI Tool

          Undress AI Tool

          免費脫衣圖片

          Undresser.AI Undress

          Undresser.AI Undress

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

          AI Clothes Remover

          AI Clothes Remover

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

          Clothoff.io

          Clothoff.io

          AI脫衣器

          Video Face Swap

          Video Face Swap

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

          熱工具

          記事本++7.3.1

          記事本++7.3.1

          好用且免費的程式碼編輯器

          SublimeText3漢化版

          SublimeText3漢化版

          中文版,非常好用

          禪工作室 13.0.1

          禪工作室 13.0.1

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

          Dreamweaver CS6

          Dreamweaver CS6

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

          SublimeText3 Mac版

          SublimeText3 Mac版

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

          如何將兩個PHP陣列組合獨特的值? 如何將兩個PHP陣列組合獨特的值? Jul 02, 2025 pm 05:18 PM

          要合併兩個PHP數(shù)組並保留唯一值,有兩種主要方法。 1.對於索引數(shù)組或僅需值去重的情況,使用array_merge和array_unique組合:先用array_merge($array1,$array2)合併數(shù)組,再用array_unique()去重,最終得到包含所有唯一值的新數(shù)組;2.對於關(guān)聯(lián)數(shù)組且希望保留第一個數(shù)組中的鍵值對時,使用 運算符:$result=$array1 $array2,這將確保第一個數(shù)組中的鍵不會被第二個數(shù)組覆蓋。這兩種方法分別適用於不同場景,根據(jù)是否需要保留鍵名或只關(guān)注

          PHP正則密碼強度 PHP正則密碼強度 Jul 03, 2025 am 10:33 AM

          判斷密碼強度需結(jié)合正則與邏輯處理,基礎(chǔ)要求包括:1.長度不少於8位;2.至少含小寫字母、大寫字母、數(shù)字;3.可加入特殊字符限制;進(jìn)階方面需避免連續(xù)重複字符及遞增/遞減序列,這需PHP函數(shù)檢測;同時應(yīng)引入黑名單過濾常見弱密碼如password、123456;最終建議結(jié)合zxcvbn庫提升評估精度。

          如何在PHP中牢固地處理文件上傳? 如何在PHP中牢固地處理文件上傳? Jul 08, 2025 am 02:37 AM

          要安全處理PHP文件上傳需驗證來源與類型、控製文件名與路徑、設(shè)置服務(wù)器限制並二次處理媒體文件。 1.驗證上傳來源通過token防止CSRF並通過finfo_file檢測真實MIME類型使用白名單控制;2.重命名文件為隨機(jī)字符串並根據(jù)檢測類型決定擴(kuò)展名存儲至非Web目錄;3.PHP配置限制上傳大小及臨時目錄Nginx/Apache禁止訪問上傳目錄;4.GD庫重新保存圖片清除潛在惡意數(shù)據(jù)。

          PHP變量範(fàn)圍解釋了 PHP變量範(fàn)圍解釋了 Jul 17, 2025 am 04:16 AM

          PHP變量作用域常見問題及解決方法包括:1.函數(shù)內(nèi)部無法訪問全局變量,需使用global關(guān)鍵字或參數(shù)傳入;2.靜態(tài)變量用static聲明,只初始化一次並在多次調(diào)用間保持值;3.超全局變量如$_GET、$_POST可在任何作用域直接使用,但需注意安全過濾;4.匿名函數(shù)需通過use關(guān)鍵字引入父作用域變量,修改外部變量則需傳遞引用。掌握這些規(guī)則有助於避免錯誤並提升代碼穩(wěn)定性。

          在PHP中評論代碼 在PHP中評論代碼 Jul 18, 2025 am 04:57 AM

          PHP註釋代碼常用方法有三種:1.單行註釋用//或#屏蔽一行代碼,推薦使用//;2.多行註釋用/.../包裹代碼塊,不可嵌套但可跨行;3.組合技巧註釋如用/if(){}/控制邏輯塊,或配合編輯器快捷鍵提升效率,使用時需注意閉合符號和避免嵌套。

          撰寫PHP評論的提示 撰寫PHP評論的提示 Jul 18, 2025 am 04:51 AM

          寫好PHP註釋的關(guān)鍵在於明確目的與規(guī)範(fàn),註釋應(yīng)解釋“為什麼”而非“做了什麼”,避免冗餘或過於簡單。 1.使用統(tǒng)一格式,如docblock(/*/)用於類、方法說明,提升可讀性與工具兼容性;2.強調(diào)邏輯背後的原因,如說明為何需手動輸出JS跳轉(zhuǎn);3.在復(fù)雜代碼前添加總覽性說明,分步驟描述流程,幫助理解整體思路;4.合理使用TODO和FIXME標(biāo)記待辦事項與問題,便於後續(xù)追蹤與協(xié)作。好的註釋能降低溝通成本,提升代碼維護(hù)效率。

          發(fā)電機(jī)如何在PHP中工作? 發(fā)電機(jī)如何在PHP中工作? Jul 11, 2025 am 03:12 AM

          AgeneratorinPHPisamemory-efficientwaytoiterateoverlargedatasetsbyyieldingvaluesoneatatimeinsteadofreturningthemallatonce.1.Generatorsusetheyieldkeywordtoproducevaluesondemand,reducingmemoryusage.2.Theyareusefulforhandlingbigloops,readinglargefiles,or

          如何在PHP中創(chuàng)建數(shù)組? 如何在PHP中創(chuàng)建數(shù)組? Jul 02, 2025 pm 05:01 PM

          在PHP中創(chuàng)建數(shù)組的方法有兩種:使用array()函數(shù)或使用中括號[]。 1.使用array()函數(shù)是傳統(tǒng)方式,兼容性好,定義索引數(shù)組如$fruits=array("apple","banana","orange"),關(guān)聯(lián)數(shù)組如$user=array("name"=>"John","age"=>25);2.使用[]是從PHP5.4開始支持的更簡潔的方式,如$color

          See all articles