要開始撰寫一個類似 Laravel 的框架之前,
首先我們要了解 Laravel 原本的做法是怎麼做的
我們可以到 Laravel 框架原始碼的 github 先看看
https://github.com/laravel/laravel
這邊的程式碼,就是當我們執行 composer create-project laravel/laravel
這個指令時,所建立的原始碼來源
我們來看看專案的 composer.json
{
"name": "laravel/laravel",
"type": "project",
"description": "The skeleton application for the Laravel framework.",
"keywords": ["laravel", "framework"],
"license": "MIT",
"require": {
"php": "^8.2",
"laravel/framework": "^11.9",
"laravel/tinker": "^2.9"
}
}
這邊我們可以看到,這個檔案內宣告了專案的名字、類型,以及簡單的說明。更重要的是還說明了專案內主要相依的套件。
這個專案內主要相依的套件,是 "laravel/framework"
這個套件,套件的 github 位於 https://github.com/laravel/framework 。
這個套件內包含了 Laravel 內主要的功能,像是 ORM、認證、檔案系統⋯⋯等等。
為什麼要這樣設計呢?
透過將功能拆分成腳手架(The skeleton application for the Laravel framework.)和框架核心兩塊,當我們在撰寫程式時,可以依據腳手架內的模板設置,來規範我們檔案的架構。另外,在升級的時候,我們也可以只升級框架核心的部分,而不影響我們所撰寫的程式。
要參考這樣的做法,我們也一樣需要兩個 github repo,我們先試著做一個 laravel/laravel 出來
首先,我們要試著先做出一個 PHP 的 Hello World 專案。
由於我們沒有 Laravel Sail 這麼方便的工具來幫我們設置環境了,我們這邊需要使用 docker,來建立一個原生的 PHP 專案環境。
這邊我們參考 https://docs.docker.com/guides/language/php/containerize/ 這個文章,來快速的生成一個可以運作 PHP 的環境
首先我們 clone 一份官方提供的範例
git clone https://github.com/docker/docker-php-sample
接著進到 docker-php-sample
內,執行
docker init
這邊要特別注意一下,如果 docker 版本太舊的話,會無法使用 init 這個指令,只要更新 docker 版本並重啟就好。
執行過後,應該就可以看到專案內有 compose.yaml
這個檔案,這時候我們再執行
docker compose up --build
就可以在 http://localhost:9000/hello.php 上看到 hello world 了!
今天的環境建置就到這邊,我們明天見!