前言
本文實作一個可以讀取 YouTube API 的套件。
專案目錄
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19
| |- youtube-api/ |- component/ |- example/ |- index.php |- src/ |- config/ |- youtube.php |- Facades/ |- Youtube.php |- Youtube.php |- YoutubeServiceProvider.php |- tests/ |- YoutubeTest.php |- vendor/ |- .gitignore |- composer.json |- composer.lock |- phpunit.xml |- README.md
|
建立 Laravel 設定
在 src/config
資料夾中新增一個 youtube.php
檔。
1 2 3 4 5
| return [
'key' => env('YOUTUBE_API_KEY', 'YOUR_API_KEY')
];
|
建立 Laravel 靜態代理
在 src/Facades
資料夾中新增一個 Youtube.php
檔。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16
| namespace Memo\Youtube\Facades;
use Illuminate\Support\Facades\Facade;
class Youtube extends Facade {
protected static function getFacadeAccessor() { return 'youtube'; } }
|
建立 Laravel 服務提供者
在 src
資料夾中新增一個 YoutubeServiceProvider.php
檔。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32
| namespace Memo\Youtube;
use Illuminate\Support\ServiceProvider;
class YoutubeServiceProvider extends ServiceProvider {
public function boot() { $this->publishes([ __DIR__ . '/config/youtube.php' => config_path('youtube.php') ]); }
public function register() { $this->app->bind(Youtube::class, function () { return new Youtube(config('youtube.key')); });
$this->app->alias(Youtube::class, 'youtube'); } }
|
建立 .gitignore 檔
1 2 3
| /example /vendor composer.lock
|
建立 README.md 檔
1 2
| ## 概述 此套件用於 YouTube API 的讀取。
|
修改 composer.json 檔
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44
| { "name": "memochou1993/youtube-api", "description": "YouTube API", "keywords": ["youtube", "api"], "homepage": "https://github.com/memochou1993/youtube-api", "license": "MIT", "authors": [ { "name": "Memo Chou", "homepage": "https://github.com/memochou1993", "role": "Developer" } ], "support": { "email": "memochou1993@gmail.com" }, "require": { "php": "^7.0", "guzzlehttp/guzzle": "^6.1" }, "require-dev": { "phpunit/phpunit": "^6.1" }, "autoload": { "psr-4": { "Memo\\Youtube\\": "src/" } }, "autoload-dev": { "psr-4": { "Memo\\Youtube\\Tests\\": "tests" } }, "extra": { "laravel": { "providers": [ "Memo\\Youtube\\YoutubeServiceProvider" ], "aliases": { "Youtube": "Memo\\Youtube\\Facades\\Youtube" } } } }
|
發布
- 登入 GitHub,創建一個
youtube-api
儲存庫,將套件上傳。
- 登入 Packagist,註冊 https://github.com/memochou1993/youtube-api 套件。
版本控制
在 GitHub 為套件建立一個語意化版本作為標籤:
- 點選
release
。
- 點選
Create a new release
。
- 在
Tag version
輸入 v0.0.1
。
- 點選
Publish release
。
啟動掛鉤
GitHub 如果沒有自動建立,可以手動為套件啟動掛鉤。
- 點選
Settings
。
- 點選
Webhooks
。
- 在
Payload URL
輸入 https://packagist.org/api/github。
- 點選
Add webhook
。
安裝
建立 Laravel 專案。
安裝套件。
1
| composer require memochou1993/youtube-api dev-master
|
發布資源。
1
| php artisan vendor:publish --provider="Memo\Youtube\YoutubeServiceProvider"
|
使用
1 2 3
| use Youtube;
Youtube::getChannel('Google');
|
程式碼