php index.php 文件路径,自研 PHP 框架 1.0_index.php 文件说明
index.php說明
在服務上,PHP 引擎其實只執行了 index.php 這一個文件,index.php 可以抽象的看做是產品的最終型態,app 下的文件規定如何組裝,system 下的文件提供基本的“組裝零件”,最后拼裝成一個完整的產品,這就是 index.php。
下面參考 index.php 中的具體實現來一一說明:
// 引入路由解析文件
include('./system/url.php');
// 引入常量定義文件
include('./system/constant.php');
// 引入框架函數庫
include('./system/function.php');
// 解析數組拿到路徑
url::analyse($_SERVER);
$obj = new url();
// 加載指定文件
include(APP.$obj->get('path').EXT);
$class_name = $obj->get('controller');
$func = $obj->get('func');
$app = new $class_name();
$app->$func();
在設計過程中,最初的劃分其實是這樣的:
1.框架環境載入
2.框架功能執行
3.應用功能執行
抽象的看,index.php 由如上的幾個部分構成,按照規劃,進一步細分就有了最上面的具體實現。
文件引入
需要說明,文件的引入順序并不重要,這些只是準備工作,誰前誰后,并沒有什么區別。
要使用工具前必須要先準備工具。前面所說的文件引入順序并不重要,強調的是所有引入文件之間的順序并沒有關聯關系。但是,引入文件必須要在具體的執行邏輯之前,比如,下面這種寫法就是錯誤的
// 解析數組拿到路徑
url::analyse($_SERVER);
// 引入路由解析文件
include('./system/url.php');
// 引入常量定義文件
include('./system/constant.php');
// 引入框架函數庫
include('./system/function.php');
錯誤的原因在于,使用了還沒有引入的功能組件,url::analyse($_SERVER) 執行時,url 類還不存在。理解這一點,需要一些更基礎的知識。
計算機如何運行
眾所周知,計算機的核心是 CPU(此處僅用來進行簡略的說明,不需要的內容都被省略,更詳盡的基礎知識請參考其他權威資料)。
CPU 只能做以下簡單的事情:
從寄存器讀取數據;
計算;
將結果寫入寄存器。
一個腳本在被載入內存(內存是一種特殊的寄存器)之后,CPU 會從頭開始一條一條讀取腳本并執行,CPU 只能夠識別機器碼(0100101111001....00011001,類似這樣的由 0 和 1 組成的長串),所以 index.php 在執行之前先要進行翻譯,編譯成 CPU 能夠識別的機器碼,編譯過程也是一一對應,并不會打亂順序,編譯之后的機器碼可能是這樣
0100 1110
0011 1011
...
0010 0001
1111 1111
...
腳本(index.php)的一行可能對應機器碼中的一行或者多行。
進程(簡單的理解,執行的一個程序)在執行前會被分配一片內存空間,用于存儲代碼、數據和臨時變量。
如果 url::analyse($_SERVER) 在引入文件之前被執行,CPU 會在線程的內存空間中索引對應的類,而載入的動作在后面,顯然是索引不到的,這樣就會拋出一個錯誤。
這就是前面所說的,工具必須在使用之前就準備好,執行邏輯和載入文件之間具有同步(可以理解為具有先后順序要求)關系。
框架功能執行
具體指
// 解析數組拿到路徑
url::analyse($_SERVER);
$obj = new url();
// 加載指定文件
include(APP.$obj->get('path').EXT);
$class_name = $obj->get('controller');
$func = $obj->get('func');
這一段處理了這么幾個問題:
解析請求,拿到目標路由
加載目標文件
獲取控制器,方法名
應用功能執行
具體指
$app = new $class_name();
$app->$func();
這是業務執行的核心,雖然所有的請求利用的是同樣的邏輯,但是通過模塊,控制器和方法名參數的變化,就可以實現不同業務邏輯的加載,進而實現不同的業務。
PS:本系列文章最佳閱讀方式,IDE+本地運行環境,IDE中閱讀可配合 demo 運行增進理解,GitHub地址
本作品采用《CC 協議》,轉載必須注明作者和本文鏈接
城里的野山參
總結
以上是生活随笔為你收集整理的php index.php 文件路径,自研 PHP 框架 1.0_index.php 文件说明的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 认知无线电matlab代码详解,认知无线
- 下一篇: php中return返回数组,PHP中r