Intro
Router
Core: system/core/Router.php
由Codeigniter
core class執行裝載為$RTR
。
Uri中,Query String(Uri)的載入是在__construct()
執行_set_routing()
後,分別設定完成以下Properties:
- class - Controller name
- method - Action name
- directory - Controller directory if exist
_set_routing()
=>_parse_routes() > _set_request()
or_set_default_controller()
所以Router
需裝載Uri
並透過Uri
取得segments
注入設定。
Uri
Core: system/core/Uri.php
__construct()
即會解析Uri(uri_string
)至segments
:_set_uri_string()
Uri拿取方法uri_protocol
預設就是使用:_parse_request_uri()
Database
Loader載入順序:
Loader -> DB(function) -> CI_DB_{driver}_driver extends ...
Database Object Inheritance:
$this->db > CI_DB_{driver}_driver > CI_DB > CI_DB_query_builder(Optional) > CI_DB_driver
實際query最後會由當前CI_DB_{driver}_driver
呼叫_execute()
調用個體實作。Builder有做到分離,但