日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > php >内容正文

php

php index.php 文件路径,自研 PHP 框架 1.0_index.php 文件说明

發布時間:2023/12/2 php 43 豆豆
生活随笔 收集整理的這篇文章主要介紹了 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 文件说明的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。