看這一部分以前不妨先看一下confing裏的設置。在config裏有一項設置是
$config['uri_protocol'] = 'AUTO';
默認是AUTO
,能夠設置成AUTO
、PATH_INFO
、QUERY_STRING
、REQUEST_URI
、ORIG_PATH_INFO
五種方式。URI類中的主要方法_fetch_uri_string
就是圍繞這個設置展開的。web
CI自己支持CLI方式訪問(雖然我尚未看到CLI的用處~~)。正則表達式
而在這個文件中,咱們還看到除了前六個函數,其餘每一個函數都是成對出現的,帶
r
和不帶r
的,也就是正序和倒序兩種方式。不得不說CI考慮的很周全。瀏覽器
獲取並設置URI字符串安全
這個裏面其實內容很少,主要是用到
$_SERVER
這個超全局變量,對字符串作出一些操做。若是在config
裏設置的是AUTO
方式的話,就會去檢測到底使用了那種方式。(因此從效率上來說咱們是否是應該明確指定使用何種方式呢?);框架
其實這裏主要涉及到的仍是咱們常規使用的經過瀏覽器訪問和CLI模式的訪問至於CLI和常規狀況的區別,應該是在參數的接收上(這只是個人理解~~)。若是是CLI模式,則調用
_parse_cli_args
來解析參數,常規方法則經過_detect_uri
來處理。函數
解析URI並賦值學習
_detect_uri
和上一個函數裏都涉及到不少$_SERVER
這個超全局變量是很值得學習的。並且在整個CI裏使用正則表達式的地方也不少。(這彷佛是不少優秀的web框架和庫的通俗作法?jQuery也是)。fetch
過濾不安全字符code
_filter_uri
一樣是經過正則表達式。%28
->(
,不太明白這個是爲何。十六進制轉十進制的UTF-8?字符串
其他的一些對URI字段的操做
能夠看到剩下的函數都很短。但也正是精華之所在。在框架內寫代碼時取得URI或者segment的作法都是經過這些短函數了。避開直接操做的函數。最重要的是,若是是我去寫一個函數,我可能每次都會去讀取一遍URI,這樣實際上就作了不少無用功。
這一個類其實不難看懂,可是我看了好久,也不知道該從哪兒開始去寫筆記。看這個框架,看到更多的是思想。