之前完成了一個 MVC 開發模式的 PHP 專案實驗,現開始編寫框架。仿 ThinkPHP 進行目錄劃分。
application 應用程式目錄
config 配置檔案目錄
extend 擴充套件類庫目錄
public 對外入口目錄
route 路由目錄
runtime 執行時目錄
core 框架核心目錄(相當於 5 的 thinkphp 和 6 的 topthink 目錄)
vendor 第三方類庫目錄
本實驗中建立 core/src/think
相當於 ThinkPHP 5 的 thinkphp/library/think
以及 ThinkPHP 6 的 /framwork/src/think
。
自動載入
修改自動配置檔案 composer.json
,執行 composer update
。
{
"autoload": {
"psr-4": {"app\\": "application/", "think\\": "core/src/think"}
}
}
ThinkPHP 中是通過 Loader.php
類引入 vendor/autoload.php
,而不是在之前的專案實驗中直接在入口檔案匯入。在 core/src/think
目錄中建立 Loader.php
類檔案。
namespace think;
class Loader
{
public static function register()
{
require __DIR__ . '/../../../vendor/autoload.php';
}
}
編寫框架基礎檔案 core/base.php
引入 Loader
類。
namespace think;
require __DIR__ . '/src/think/Loader.php';
Loader::register();
刪除 /public/index.php
檔案原來所有程式碼,在框架中實現所有功能,入口檔案只需引入框架基礎檔案即可。
require __DIR__ . '/../core/base.php';
建立 application/index/controller/Index.php
檔案用於測試。
namespace app\index\controller;
class Index
{
public function index()
{
echo '#################################' . '<br />';
echo '#################################' . '<br />';
echo '#################################' . '<br />';
echo '######CONTROLLER===>Index########' . '<br />';
echo '#################################' . '<br />';
echo '#################################' . '<br />';
echo '#################################' . '<br />';
}
}
在 public/index.php
編寫程式碼測試
$index = new \app\index\controller\Index;
$index->index();
成功列印
#################################
#################################
#################################
######CONTROLLER===>Index########
#################################
#################################
#################################
本作品採用《CC 協議》,轉載必須註明作者和本文連結