我的部落格
文章出自 Inn的部落格 : www.gog5.cn/archives/5/
第一次開通部落格,歡迎小夥伴們點贊、交換友情連結
寫在前面
由於最近需要用到thinkphp6開發,之前也是處於瞭解階段,藉此機會來學習一些框架的知識,這也算是我學習擴充套件包開發的筆記吧。
本系列文章將從零開始一步一步構建thinkphp的部落格擴充套件包。
概覽
- composer從建立到釋出到Packagist
- 使用服務提供者註冊部落格核心
- 用資料庫遷移工具控制資料表結構
- 命令列安裝指令
- 使用中介軟體做後臺使用者認證
- RESTful API 路由設計
- 崇尚 「DRY(Don’t repeat yourself)不要重複自己」
初始化專案
本地新建 blog
資料夾,作為擴充套件的根目錄
進入目錄,執行:
composer init
基本上一直按回車就可以了
完成後,根目錄會生成一個composer.json
檔案
裡面是這樣的:
{
"name": "inn20/blog",
"authors": [
{
"name": "inn20",
"email": "dyg0924@sina.cn"
}
],
"require": {}
}
name
是擴充套件包名稱,一般是<使用者>/<包名字>
,例如inn20/blog
require
是專案的專案的依賴關係,後面會具體講到
規定應用的名稱空間
現在將composer.json
修改成
{
"name": "inn20/blog",
"authors": [
{
"name": "inn20",
"email": "dyg0924@sina.cn"
}
],
"require": {},
"autoload": {
"psr-4": {
"Inn20\\Blog\\": "src/"
}
}
}
其中"Inn20\\Blog\\": "src/"
代表名稱空間 Inn20\Blog
對應的程式碼目錄在 src
下。這樣下來,基本的composer包定義就完成了。
新建src
目錄,並在裡面新建 Demo.php
檔案:
<?php
namespace Inn20\Blog;//這裡和composer.json裡名稱空間對應
class Demo {
public static function sayHello()
{
return 'Good morning';
}
}
到這裡我們的擴充套件包已經開發完成了。
安裝Composer包
因為後面要用到,所以建議直接安裝一個thinkphp來測試。
新建 tp6
目錄,進入目錄執行:
composer create-project topthink/think ./
php think run
會輸出:
ThinkPHP Development server is started On <http://127.0.0.1:8000/>
You can exit with `CTRL-C`
Document root is: D:\tp6\public
訪問 http://127.0.0.1:8000/
沒意外的話會輸出成功頁面
接下來就是安裝composer包了,因為我們現在是在本地,還沒釋出到Packagist,需要做一點手腳。
開啟工具人tp6的composer.json
檔案,加入:
{
...
"repositories": {
"local": {
"type": "path",
"url": "d:/blog"
}
}
}
當我們下次執行 Composer 時,就會同時從 Packagist 和給定的路徑查詢依賴的資源。並且路徑形式的倉庫優先順序高於 Packagist。
接下來安裝我們的composer包:
composer require inn20/blog @dev
完美,可以看到vender目錄下多了一個軟連線 tp6\vendor\inn20\blog
,指向到d:/blog
,這就是我們的包原始碼,現在已經安裝成功了。
進入工具人tp6\app\controller\Index.php
控制器裡試試我們的包:
<?php
namespace app\controller;
use app\BaseController;
use Inn20\Blog\Demo;
class Index extends BaseController
{
public function index()
{
return Demo::sayHello();
}
}
訪問http://127.0.0.1:8000/index/index
輸出:
Good morning
就是這麼簡單。
釋出到Packagist
現在有個問題,如果別人也想用這個composer包,要把程式碼複製過來,重新配置才能用,那得多麻煩啊。這時候我們就可以把包釋出到Packagist了,後面只需要一行程式碼就可以完成安裝。
首先把blog程式碼上傳到GitHub
https://github.com/inn20/blog
建議github倉庫名和composer包名一致,不容易混淆
訪問https://packagist.org/
,註冊一個賬號
登陸後點選右上角的Submit,填寫GitHub連結Check就ok了
可以看到已經提交成功了
現在可以在任意專案上執行此命令安裝blog包了
composer require inn20/blog @dev
因為blog包composer.json檔案不是穩定版本,也沒有定義版本號。所以需要加上
@dev
來指定安裝開發版,否則會安裝失敗。
本節原始碼
https://github.com/inn20/blog/tree/learn01
下一節將正式進入blog的開發,學習thinkphp的生命週期、容器、服務註冊等。
本作品採用《CC 協議》,轉載必須註明作者和本文連結