昨天我們建立了一個框架的腳手架,並且能成功的運作內容,看到 Hello World 了。
今天我們試著建立框架的核心部分,並且將框架程式碼和核心部分進行串接。
首先,我們建立一個專案,這邊我使用 reccaval-framework 這個名字。
接著,我們在專案內建立一個 src/Foundation/Application.php,作為我們的第一個類別,內容如下
<?php
namespace Reccaval\Foundation;
class Application
{
    /**
     * The Reccaval framework version.
     *
     * @var string
     */
    const VERSION = '0.0.1';
    /**
     * Get the version number of the application.
     *
     * @return string
     */
    public function version()
    {
        return static::VERSION;
    }
}
然後,我們在專案內建立 composer.json,這邊可以使用 composer init 這個指令協助建立。建立完成之後的內容如下
{  
    "name": "recca/reccaval-framework",  
    "description": "a test project for mimicking laravel/framework",  
    "type": "library",  
    "license": "MIT",  
    "autoload": {  
        "psr-4": {  
            "Reccaval\\": "src/"  
        }  
    },  
    "authors": [  
        {  
            "name": "Recca Chao",  
            "email": "flamerecca711@gmail.com"  
        }  
    ],  
    "require": {}  
}
這邊要特別注意到 "autoload" 裡面的內容,必須要正確的對應專案的資料夾以及命名空間。
如果出錯的話,會導致引用該套件時,類別無法正確地引入。
接著,我們要將這個專案發佈到 packagist 上面,讓 composer 可以成功的載入這個 library。
首先,我們將這個專案發佈到一個公開的 Github Repo 上面。這邊的範例為 https://github.com/flamerecca/reccaval-framework/
然後,我們幫這個專案加上一個 Tag,標記為 0.0.1
https://github.com/flamerecca/reccaval-framework/releases/tag/0.0.1
接著我們申請一個 https://packagist.org/ 的帳號,並點擊 submit 進到 https://packagist.org/packages/submit ,建立對應的套件
建立完成之後,我們就可以到昨天的測試專案內,透過指令
composer require recca/reccaval-framework:0.0.1
來安裝 reccaval-framework 了。
安裝好之後,我們就可以試著使用我們寫好的框架內容。
我們將原本的 hello.php 改寫如下
<?php
use Reccaval\Foundation\Application;
// Register the Composer autoloader...
require __DIR__.'/../vendor/autoload.php';
echo (new Application)->version();
接著重新執行 docker compose up --build 來載入我們修改後的內容。
接著我們就可以看到畫面上顯示出我們的版本號碼 0.0.1
到這邊,框架的腳手架與框架核心之間的串接就完成了!