• BodyIdAttribute?><\/span><\/span>><\/span><\/span><\/pre>YII與編碼療法緊密地集成在一起。 CodeCeption是一個(gè)很好的PHP測試框架,可幫助簡化為應(yīng)用程序創(chuàng)建單元,功能和接受測試的過程。因?yàn)槟跒樗袘?yīng)用程序編寫自動(dòng)測試,對(duì)嗎?

    \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ā)送的任何電子郵件都會(huì)寫入文件而不是發(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類添加了幾種方法,這些方法可幫助您在功能測試中使用主動(dòng)記錄(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)鍵部分,幸運(yùn)的是,YII具有一些很棒的功能來幫助您減輕您的思維。\n

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

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

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

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

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

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

        >前面的代碼告訴DefaultControllerTo允許訪客用戶訪問登錄名并查看操作,但不能訪問Create Action。 (?是針對(duì)匿名用戶的別名, @是指身份驗(yàn)證的用戶)。<\/p>>\nRBAC是一種更強(qiáng)大的方法,可以指定用戶可以在整個(gè)應(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允許您在特定條件下授予對(duì)應(yīng)用程序某些方面的訪問權(quán)限。例如,您可以創(chuàng)建一個(gè)規(guī)則,該規(guī)則允許用戶編輯自己的文章,而不是由他人創(chuàng)建的文章。\n<\/p>6??s短開發(fā)時(shí)間

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

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

        >模型<\/h2>\n

        控制器<\/p>\n

        表格<\/p>\n

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

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

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

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

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

          這將在{appdir}\/遷移中創(chuàng)建一個(gè)新的遷移模板,該模板看起來像這樣:<\/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日韩一区二区三区精品,成人性爱视频在线观看,国产,欧美,日韩,一区,www.成色av久久成人,2222eeee成人天堂

          BodyIdAttribute?><\/span><\/span>><\/span><\/span><\/pre>創(chuàng)建表僅涉及在命令行上運(yùn)行命令:>\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

          >每個(gè)人都知道一個(gè)慢速的網(wǎng)站會(huì)創(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時(shí)選擇所需的任何緩存系統(tǒng)。您甚至可以同時(shí)注冊多個(gè)緩存組件。 YII當(dāng)前支持?jǐn)?shù)據(jù)庫和文件系統(tǒng)緩存,以及APC,memcache,redis,wincache,Xcache和Zend Data Cache。\n

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

          \n\n<\/p>>最后,YII有一個(gè)命令行工具來促進(jìn)前端資產(chǎn)的縮小。只需運(yù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

          接下來,運(yùn)行此控制臺(tái)命令以執(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>>您必須手動(dòng)下載并安裝這些外部工具。

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

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

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

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

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

          <\/p>\n

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

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

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

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

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

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

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

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

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

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

          選擇YII 2框架的7個(gè)理由

          Feb 19, 2025 am 09:37 AM

          選擇YII 2框架的7個(gè)理由

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

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

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

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

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

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

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

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

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

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

          3。高度擴(kuò)展

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

          首先,我將在我的appComponents目錄中創(chuàng)建一個(gè)使用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。鼓勵(lì)測試

          <span><span><span><body</span> <span><span><?=$this->BodyIdAttribute?></span></span>></span></span>
          YII與編碼療法緊密地集成在一起。 CodeCeption是一個(gè)很好的PHP測試框架,可幫助簡化為應(yīng)用程序創(chuàng)建單元,功能和接受測試的過程。因?yàn)槟跒樗袘?yīng)用程序編寫自動(dòng)測試,對(duì)嗎?

          使用此配置,以下情況將發(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ā)送的任何電子郵件都會(huì)寫入文件而不是發(fā)送。

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

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

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

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

          >

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

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

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

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

          > RBAC是一種更強(qiáng)大的方法,可以指定用戶可以在整個(gè)應(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允許您在特定條件下授予對(duì)應(yīng)用程序某些方面的訪問權(quán)限。例如,您可以創(chuàng)建一個(gè)規(guī)則,該規(guī)則允許用戶編輯自己的文章,而不是由他人創(chuàng)建的文章。

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

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

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

          >模型

          控制器

          表格

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

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

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

            選擇YII 2框架的7個(gè)理由

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

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

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

            >
            <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)建表僅涉及在命令行上運(yùn)行命令:>

            并刪除表:
            <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>

            >每個(gè)人都知道一個(gè)慢速的網(wǎng)站會(huì)創(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時(shí)選擇所需的任何緩存系統(tǒng)。您甚至可以同時(shí)注冊多個(gè)緩存組件。 YII當(dāng)前支持?jǐn)?shù)據(jù)庫和文件系統(tǒng)緩存,以及APC,memcache,redis,wincache,Xcache和Zend Data Cache。

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

            >

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

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

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

            接下來,運(yùn)行此控制臺(tái)命令以執(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>
            >

            注意:

            >您必須手動(dòng)下載并安裝這些外部工具。
            yii migrate<span>/create create_user_table</span>
            >

            結(jié)論

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

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

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

            的問題(常見問題解答)

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

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

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

            >

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

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

            >

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

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

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

            >

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

            >

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

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

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

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

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

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

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

          本站聲明
          本文內(nèi)容由網(wǎng)友自發(fā)貢獻(xiàn),版權(quán)歸原作者所有,本站不承擔(dān)相應(yīng)法律責(zé)任。如您發(fā)現(xiàn)有涉嫌抄襲侵權(quán)的內(nèi)容,請聯(lián)系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脫衣機(jī)

          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)

          對(duì)基于PHP的API進(jìn)行版本控制的最佳實(shí)踐是什么? 對(duì)基于PHP的API進(jìn)行版本控制的最佳實(shí)踐是什么? Jun 14, 2025 am 12:27 AM

          基于toversionaphp,useUrl deuseUrl specteringforclarityAndEsofRouting,單獨(dú)的codetoavoidConflicts,dremecateOldVersionswithClearCommunication,andConsiderCustomHeadeSerlySerallyWhennEnncelsy.startbyplacingtheversionIntheUrl(E.G.,epi/api/v

          如何在PHP中實(shí)施身份驗(yàn)證和授權(quán)? 如何在PHP中實(shí)施身份驗(yàn)證和授權(quán)? Jun 20, 2025 am 01:03 AM

          tosecurelyhandleauthenticationandationallizationInphp,lofterTheSesteps:1.AlwaysHashPasswordSwithPassword_hash()andverifyusingspasspassword_verify(),usepreparedStatatementStopreventsqlineptions,andStoreSeruserDatain usseruserDatain $ _sessiveferterlogin.2.implementrole-2.imaccessccsccccccccccccccccccccccccc.

          PHP中的程序和面向?qū)ο蟮木幊谭独g有什么區(qū)別? PHP中的程序和面向?qū)ο蟮木幊谭独g有什么區(qū)別? Jun 14, 2025 am 12:25 AM

          procemal and object-tiriendedprogromming(oop)inphpdiffersimplessintustructure,可重復(fù)使用性和datahandling.1.procedural-Progrogursmingusesfunctimesfunctionsormanized sequalized sequalized sequiential,poiperforsmallscripts.2.OpporganizesCodeOrganizescodeOdeIntsocloceSandObjects,ModelingReal-Worlden-Worlden

          PHP中有哪些弱參考(弱圖),何時(shí)有用? PHP中有哪些弱參考(弱圖),何時(shí)有用? Jun 14, 2025 am 12:25 AM

          PHPdoesnothaveabuilt-inWeakMapbutoffersWeakReferenceforsimilarfunctionality.1.WeakReferenceallowsholdingreferenceswithoutpreventinggarbagecollection.2.Itisusefulforcaching,eventlisteners,andmetadatawithoutaffectingobjectlifecycles.3.YoucansimulateaWe

          如何在PHP中安全地處理文件上傳? 如何在PHP中安全地處理文件上傳? Jun 19, 2025 am 01:05 AM

          要安全處理PHP中的文件上傳,核心在于驗(yàn)證文件類型、重命名文件并限制權(quán)限。1.使用finfo_file()檢查真實(shí)MIME類型,僅允許特定類型如image/jpeg;2.用uniqid()生成隨機(jī)文件名,存儲(chǔ)至非Web根目錄;3.通過php.ini和HTML表單限制文件大小,設(shè)置目錄權(quán)限為0755;4.使用ClamAV掃描惡意軟件,增強(qiáng)安全性。這些步驟有效防止安全漏洞,確保文件上傳過程安全可靠。

          PHP中==(松散比較)和===(嚴(yán)格的比較)之間有什么區(qū)別? PHP中==(松散比較)和===(嚴(yán)格的比較)之間有什么區(qū)別? Jun 19, 2025 am 01:07 AM

          在PHP中,==與===的主要區(qū)別在于類型檢查的嚴(yán)格程度。==在比較前會(huì)進(jìn)行類型轉(zhuǎn)換,例如5=="5"返回true,而===要求值和類型都相同才會(huì)返回true,例如5==="5"返回false。使用場景上,===更安全應(yīng)優(yōu)先使用,==僅在需要類型轉(zhuǎn)換時(shí)使用。

          如何與PHP的NOSQL數(shù)據(jù)庫(例如MongoDB,Redis)進(jìn)行交互? 如何與PHP的NOSQL數(shù)據(jù)庫(例如MongoDB,Redis)進(jìn)行交互? Jun 19, 2025 am 01:07 AM

          是的,PHP可以通過特定擴(kuò)展或庫與MongoDB和Redis等NoSQL數(shù)據(jù)庫交互。首先,使用MongoDBPHP驅(qū)動(dòng)(通過PECL或Composer安裝)創(chuàng)建客戶端實(shí)例并操作數(shù)據(jù)庫及集合,支持插入、查詢、聚合等操作;其次,使用Predis庫或phpredis擴(kuò)展連接Redis,執(zhí)行鍵值設(shè)置與獲取,推薦phpredis用于高性能場景,Predis則便于快速部署;兩者均適用于生產(chǎn)環(huán)境且文檔完善。

          如何在PHP( - , *, /,%)中執(zhí)行算術(shù)操作? 如何在PHP( - , *, /,%)中執(zhí)行算術(shù)操作? Jun 19, 2025 pm 05:13 PM

          PHP中使用基本數(shù)學(xué)運(yùn)算的方法如下:1.加法用 號(hào),支持整數(shù)和浮點(diǎn)數(shù),也可用于變量,字符串?dāng)?shù)字會(huì)自動(dòng)轉(zhuǎn)換但不推薦依賴;2.減法用-號(hào),變量同理,類型轉(zhuǎn)換同樣適用;3.乘法用*號(hào),適用于數(shù)字及類似字符串;4.除法用/號(hào),需避免除以零,并注意結(jié)果可能是浮點(diǎn)數(shù);5.取模用%號(hào),可用于判斷奇偶數(shù),處理負(fù)數(shù)時(shí)余數(shù)符號(hào)與被除數(shù)一致。正確使用這些運(yùn)算符的關(guān)鍵在于確保數(shù)據(jù)類型清晰并處理好邊界情況。

          See all articles