這篇文章主要介紹了關於yii的urlManager元件配置,有著一定的參考價值,現在分享給大家,有需要的朋友可以參考一下
配置元件主要包括:
指定類別。缺少的話使用預設類別
屬性。缺少的話使用預設類別的對應屬性
yii的urlManager元件配置 元件簡單理解
urlManager是一個類,為什麼又稱它為元件呢?先不用管,我們只需知道,要為組件指定類即可,如果沒有指定會報錯,除非該組件有預設類,哪些組件有預設類呢?就是核心元件,裝個B看下原始碼,以yii高階模板為例。
Pis:如無特別說明,下面的路徑指的是檔案具體路徑,不是命名空間
開啟
/frontend /web/index.php
,看到
首先,用數組助手類別的merge方法遞歸合併數組,後覆蓋前得出最終配置,然後,將配置資料傳到Application
的建構方法裡,再執行其run方法。跳到
verdor\yiisoft\yiiyii的urlManager元件配置\web\Application.php
的run方法,它觸發了許多事件,具體就不看了,貌似無關~,components相關東西在哪裡?搜尋components
,發現執行了coreComponents方法,其內容是
並沒有發現urlManager的預設類,並且各個設定檔都沒為urlManager指定class,為什麼沒報錯?因為它呼叫了父類別的coreComponents
方法。-
跳到
verdor\yiisoft\yiiyii的urlManager元件配置\base\Application.php
,原來urlManager元件在這裡指定了類別。我們已經知道是透過
coreComponents
指定核心元件的類別了,但它是如何呼叫這個方法的呢?回頭想想,入口腳本還做了什麼?實例化Application
類別時,自動呼叫建構方法!我們發現省略~\web\Application
沒有覆寫父類別的建構方法,也就是看父類別的建構方法 - ##跳到
preInit
大概意思是,方法,在這個預初始化方法裡,接受的參數是引用,也就是這個方法要對
$config陣列改造,重點看
如果設定檔沒有配置某個元件或沒有為某元件指定類,這個元件就用coreComponents
指定的類別
。將$config變數建構好後,傳到
Component::__construct($config),開始元件的具體內容,就不往下走了。
- 下面看元件屬性的配置,跳到
/專案目錄/frontend/config/main.php
,我們看到urlManager元件配置被註解掉了,即表示其使用了
urlManager元件指定類別的屬性的預設值,具體在
\vendor\yiisoft\yiiyii的urlManager元件配置\wbe\UrlManager.php。
小結一下:元件配置,一指定類別(無預設就要在設定檔寫明),二配置屬性,屬性就是類別的成員變數
<VirtualHost *:yii的urlManager元件配置0>DocumentRoot "${INSTALL_DIR}/www/advanced/frontend/web/"ServerName frontend.advanced.com</VirtualHost>
這一步不是必須的~3 各組態作用以請求
Site#控制器的
about動作為範例
-
#enablePrettyUrl
:
Pis:這個設為false,下面的設定都不行
- false [預設]:透過入口腳本?r=[模組/]控制器/動作方式存取。即
http://localhost/advanced/frontend/web/index.php?r=site/about
- true:開啟美化路由,(注意僅配置這個為ture,其他不配置,即用預設),透過入口腳本/[模組/]控制器/動作方式存取。即
http://localhost/advanced/frontend/web/index.php/site/about
showScriptName:
http://frontend.advanced.com/site/about造訪
true [默认]: 不隐藏入口脚本,即要加入口脚本文件名index.php才能访问到,
http://localhost/advanced/frontend/web/index.php/site/about
-
false:按理解,设为false,应该是
http://localhost/advanced/frontend/web/site/about
即可访问,但发现是apache提示找不到页面,这意味着,apache服务器找不到url请求的文件,按apache理解,
省略~/web/
下没有site
目录,所以,想要实现隐藏入口脚本,还要在/frontend/web/
下添加.htaccess
文件,官方文档介绍,具体步骤如下:RewriteEngine onRewriteCond %{REQUEST_FILENAME} !-fRewriteCond %{REQUEST_FILENAME} !-dRewriteRule . index.php
在
.htaccess
添加内容如下,意思是,如果请求的文件或目录找不到,就转到index.php
enableStrictParsing
:
false [默认]:不启用严格解析路由,意思是,如果请求url与所有
rules
规则都不匹配的话,就按照默认的路由处理方式来处理,即按[模块/]控制器/动作,方式去解析url。-
true:设为true后,当请求url与
rules
规则不匹配,就报错。如,通过
http://frontend.advanced.com/site/about
请求,得到Yii框架的报错提示这意味着,请求经过apache的转发,已经找到目的文件(入口脚本),目的文件运行过程中,没有得到期望参数(没传或验证不通过),因此Yii框架抛异常了。
注意与上面apache提示找不到页面区分~
suffix
: 后缀名,如设置为suffix => '.html
,需通过http://frontend.advanced.com/site/about.html
才能访问到
rules
: 规则的配置就很复杂了,下面详讲。
4 rules
配置
-
想访问
Site
的about
动作,要在rules里加'site/about' => 'site/about'
其中,左边称为
pattern
,对应输入的url,右边为route
,对应[模型/]控制器/动作。 -
如果不想为每个动作都加一个规则,可以这样
'<controller:\w+>/<action:\w+>' => '<controller>/<action>',
可以这样理解,左边,接收请求url的对应值,对它们作
\w
验证,即必须是字母或数字或下划线,以/site/about
为例,验证通过,赋值给临时变量controller
,action
,右边使用,从而找到Site
控制器的about
动作。 -
同理,模块下的控制器动作也可以这样实现
'<module:\w+>/<controller:\w+>/<action:\w+>' => '<module>/<controller>/<action>',
restful的路由规则,在研究,日后再补~
yii的urlManager元件配置 Notice
suffix
设了.html
, 下面的rules都会用到,要想不用,需要在规则数组单独声明suffix=> ''
restful路由配置,
pluralize
参数默认为true,假如控制器为UserController
,要通过users
的url才能访问到,设为false的话,就不用加s,通过user
即可访问,如果控制器本来就是UsersController
,不管pluralize
如何配置,都是通过users
访问
相关推荐:
以上是yii的urlManager元件配置的詳細內容。更多資訊請關注PHP中文網其他相關文章!

PHP在現代編程中仍然是一個強大且廣泛使用的工具,尤其在web開發領域。 1)PHP易用且與數據庫集成無縫,是許多開發者的首選。 2)它支持動態內容生成和麵向對象編程,適合快速創建和維護網站。 3)PHP的性能可以通過緩存和優化數據庫查詢來提升,其廣泛的社區和豐富生態系統使其在當今技術棧中仍具重要地位。

在PHP中,弱引用是通過WeakReference類實現的,不會阻止垃圾回收器回收對象。弱引用適用於緩存系統和事件監聽器等場景,需注意其不能保證對象存活,且垃圾回收可能延遲。

\_\_invoke方法允許對象像函數一樣被調用。 1.定義\_\_invoke方法使對象可被調用。 2.使用$obj(...)語法時,PHP會執行\_\_invoke方法。 3.適用於日誌記錄和計算器等場景,提高代碼靈活性和可讀性。

Fibers在PHP8.1中引入,提升了並發處理能力。 1)Fibers是一種輕量級的並發模型,類似於協程。 2)它們允許開發者手動控制任務的執行流,適合處理I/O密集型任務。 3)使用Fibers可以編寫更高效、響應性更強的代碼。

PHP社區提供了豐富的資源和支持,幫助開發者成長。 1)資源包括官方文檔、教程、博客和開源項目如Laravel和Symfony。 2)支持可以通過StackOverflow、Reddit和Slack頻道獲得。 3)開發動態可以通過關注RFC了解。 4)融入社區可以通過積極參與、貢獻代碼和學習分享來實現。

PHP和Python各有優勢,選擇應基於項目需求。 1.PHP適合web開發,語法簡單,執行效率高。 2.Python適用於數據科學和機器學習,語法簡潔,庫豐富。

PHP不是在消亡,而是在不斷適應和進化。 1)PHP從1994年起經歷多次版本迭代,適應新技術趨勢。 2)目前廣泛應用於電子商務、內容管理系統等領域。 3)PHP8引入JIT編譯器等功能,提升性能和現代化。 4)使用OPcache和遵循PSR-12標準可優化性能和代碼質量。

PHP的未來將通過適應新技術趨勢和引入創新特性來實現:1)適應云計算、容器化和微服務架構,支持Docker和Kubernetes;2)引入JIT編譯器和枚舉類型,提升性能和數據處理效率;3)持續優化性能和推廣最佳實踐。


熱AI工具

Undresser.AI Undress
人工智慧驅動的應用程序,用於創建逼真的裸體照片

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

Undress AI Tool
免費脫衣圖片

Clothoff.io
AI脫衣器

AI Hentai Generator
免費產生 AI 無盡。

熱門文章

熱工具

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

記事本++7.3.1
好用且免費的程式碼編輯器

MinGW - Minimalist GNU for Windows
這個專案正在遷移到osdn.net/projects/mingw的過程中,你可以繼續在那裡關注我們。 MinGW:GNU編譯器集合(GCC)的本機Windows移植版本,可自由分發的導入函式庫和用於建置本機Windows應用程式的頭檔;包括對MSVC執行時間的擴展,以支援C99功能。 MinGW的所有軟體都可以在64位元Windows平台上運作。

EditPlus 中文破解版
體積小,語法高亮,不支援程式碼提示功能

SublimeText3 Linux新版
SublimeText3 Linux最新版