jumilla/laravel-extension

Laravel Extension Pack

v2.0.4 2015-05-24 07:47 UTC

README

機能

  • アドオン機能の追加

    • 次期リリースバージョンLaravel5.0に対応しています。
    • Laravel5.0のディレクトリ構造を複製するイメージで使うことができます。
    • パッケージに独自の名前空間(PSR-4)を一つ持たせることができます。
    • Laravel5のパッケージとして扱えます。
      • lang, viewの識別子の名前空間表記{addon-name}::が使えます。
    • アドオンの追加はディレクトリをコピーするだけ。config/app.phpにコードを追加する必要はありません。
  • 名前空間内でのファサード問題の解決

    • appディレクトリ下の名前空間付きクラスの中でファサードが使えます。(バックスラッシュやuse宣言不要)
    • アドオンの名前空間の中からも同じ記述方法でファサードが扱えます。

インストール方法

組み込み済みのLaravelプロジェクトをダウンロードする

$> composer create-project laravel-plus/laravel5 <project-name>

既存のプロジェクトにインストールする

composer.jsonファイルを編集します。 行末のカンマはJSON記法に合わせて設定してください。

    "require": [
        "laravel/framework": "5.*",
        ...
        ↓追加する
        "laravel-plus/extension": "2.*"
    ],

以下のコマンドを実行して、Laravel Extension Packをセットアップしてください。

$ composer update

もしくは、

$ php composer.phar update

config/app.configファイルを編集します。

    'providers' => [
        ↓追加する
        'LaravelPlus\Extension\ServiceProvider',
        ...
        'Illuminate\Foundation\Providers\ArtisanServiceProvider',
        ...
    ],

アドオン設定ファイルをインストールします。 app/config/addon.phpを生成したい時に、いつでも使えます。

$ php artisan addon:setup

動作確認

サンプルとして、アドオンwikiを作成します。 アドオンに割り当てられる名前空間はWikiです。(--namespaceオプションで指定することもできます。)

$ php artisan addon:make wiki

ルーティング設定を確認してください。

$ php artisan route:list

ローカルサーバーを立ち上げ、ブラウザでhttp://localhost:8000/addons/wikiにアクセスします。 パッケージ名が表示されれば成功です。

$ php artisan serve

コマンド

php artisan addon:setup

アドオン機能を有効にします。

  • addonsディレクトリを作成する。
  • app/config/addon.phpファイルを作成する。

php artisan addon:make <addon-name> {--namespace=...} {--no-namespace}

アドオンを作成します。

  • addonsディレクトリ下に、addon-nameという名前でディレクトリを作成する。
  • 以下のディレクトリ構成を作成する。
    • app/
      • Console/
        • Commands/
        • Kernel.php
      • Http/
        • Controllers/
        • Middleware/
        • Requests/
        • Kernel.php
        • routes.php
      • Providers/
      • Services/
    • config/
    • database/
      • migrations/
      • seeds/
    • resources/
      • assets/
      • lang/
        • en/
        • Lang::getLocale()/
      • specs/
      • views/
        • sample.blade.php
    • addon.json

php artisan addon:list

全てのアドオンをリストアップします。

ファサードの拡張

Laravel5のエイリアスローダーはグローバル名前空間にしか作用しないため、名前空間の中からファサードを扱うにはクラス名の先頭に\を付けなければなりません。

function index()
{
    return \View::make()
}

または、use宣言を使います。

use View;

...

function index()
{
    return View::make()
}

Laravel Extensionは、アドオン下の名前空間内に対してファサードを解決するエイリアスローダーを持っているので、Laravel公式ドキュメント記載の方法がそのまま使えます。

function index()
{
    return View::make()
}

起動時の動き

  • addons/{addon-name}/addon.jsonfilesのファイルをrequireします。
  • addons/{addon-name}/addon.jsonnamespaceを見て、directoriesに指定された全てのディレクトリに対しPSR-4規約に基づくクラスオートロードの設定をします。

著者

Fumio Furukawa (fumio@jumilla.me)

ライセンス

MIT