プログラミング

Laravel7系でTraitのmakeコマンドを作成する方法

artisan Laravel Linux PHP Trait
Laravel7系でTraitのmakeコマンドを作成する方法

Laravel7がリリースされて、さっそくそれを使った開発の機会がやってきましたので、使用頻度の高いものをまとめていきたいと思います。

5系や6系の情報は多く出回っていますが、6系がLTSということもあって7系の情報は少なめですね。

 

今回は「Laravel7系でTraitのmakeコマンドを作成する方法」をご紹介します。

 

 

  

Traitジェネレーターの作成

 

Traitジェネレーターを作成するためには、以下の3ステップで行います。

  1. コマンドの準備
  2. テンプレート(.stub)の準備
  3. Traitの作成

 

では手順に沿って説明していきます。

 

 

コマンドの準備

 

コントローラーやリクエストと同じようにmakeコマンドでトレイトを作成するためには、トレイト用のmakeコマンドを作成しなければいけません。

まずはCommandクラスを用意するために、Laravelディレクトリで以下のコマンドを実行してください。

$ php artisan make:command TraitMakeCommand

 

これで、以下のディレクトリにTraitMakeCommand.phpが作成されます。

app/Console/Commands
<?php

namespace App\Console\Commands;

use Illuminate\Console\Command;

class TraitMakeCommand extends Command
{
    /**
     * The name and signature of the console command.
     *
     * @var string
     */
    protected $signature = 'command:name';

    /**
     * The console command description.
     *
     * @var string
     */
    protected $description = 'Command description';

    /**
     * Create a new command instance.
     *
     * @return void
     */
    public function __construct()
    {
        parent::__construct();
    }

    /**
     * Execute the console command.
     *
     * @return mixed
     */
    public function handle()
    {
        //
    }
}

 

コマンド実行直後のTraitMakeCommand.phpは上記のような内容になっていますので、以下のように書き換えてください

<?php

namespace App\Console\Commands;

use Illuminate\Console\GeneratorCommand as Command;

class TraitMakeCommand extends Command
{
              /**
              * The name and signature of the console command.
              *
              * @var string
              */
              protected $signature = 'make:trait {name}';

              /**
              * The console command description.
              *
              * @var string
              */
              protected $description = 'Create a new trait';

              /**
              * The type of class being generated.
              *
              * @var string
              */
              protected $type = 'Trait';

              /**
              * Get the stub file for the generator.
              *
              * @return string
              */
              protected function getStub()
              {
                            base_path('/stubs/trait.stub');
              }

              /**
              * Get the default namespace for the class.
              *
              * @param  string  $rootNamespace
              * @return string
              */
              protected function getDefaultNamespace($rootNamespace)
              {
                            return $rootNamespace.'\Traits';
              }
}

 ※Laravel5〜6系では$signatureに入れているコマンド名の{name}が不要だったのですが、こちらが抜けているとmake:traitを実行しても「The “name” argument does not exist.」のエラーを吐かれたので7系では追加しました

 

 

テンプレート(.stub)の準備

 

書き換えたTraitMakeCommand.php内に記述しているように、テンプレート(.stub)のファイルを以下のディレクトリへ用意します。

Laravelルート/stubs

※Laravel7系からはphp artisan stub:publishでRequestやControllerなど標準で搭載されているmakeコマンド用のstubがカスタムできるようになったため、その格納先と同じくLaravel直下のstubsディレクトリを保存先としています

 

trait.stubというファイル名で作成し、以下のように記述してください。

<?php

namespace {{ namespace }};

trait {{ class }}
{
    //
}

 

これでテンプレートファイルの準備は完了です。

 

 

Traitの作成

 

コマンドとテンプレートが準備できれば、正常にコマンドが登録されているか、listコマンドを使って確認してみてください。

$ php artisan list | grep make
make
  make:channel                    Create a new channel class
  make:command                    Create a new Artisan command
  make:controller                 Create a new controller class
  make:event                      Create a new event class
  make:exception                  Create a new custom exception class
  make:factory                    Create a new model factory
  make:job                        Create a new job class
  make:listener                   Create a new event listener class
  make:mail                       Create a new email class
  make:middleware                 Create a new middleware class
  make:migration                  Create a new migration file
  make:model                      Create a new Eloquent model class
  make:notification               Create a new notification class
  make:observer                   Create a new observer class
  make:policy                     Create a new policy class
  make:provider                   Create a new service provider class
  make:request                    Create a new form request class
  make:resource                   Create a new resource
  make:rule                       Create a new validation rule
  make:seeder                     Create a new seeder class
  make:test                       Create a new test class
  make:trait                       Create a new trait

 

最終行にmake:traitという記述があれば正常に作成されています

コマンドが作成されたら、make:traitを使ってトレイトを作成します。

$php artisan make:trait TestTrait

 

正常に終了すれば、TestTrait.phpが追加されているはずです。

app/Traits/TestTrait.php
<?php

namespace App\Traits;

trait TestTrait
{
    //
}

 

これでLaravel7系でトレイト用のmakeコマンドを作成することができました

 

 

まとめ

 

いかがだったでしょうか。

今回は「Laravel7系でTraitのmakeコマンドを作成する方法」をご紹介しました。

他にも自作でmakeコマンドを作成したい人は、同じやり方でできますので試してみてください。

 

Laravel7系の情報は5や6と比べるとまだまだ少ないですので、もしこれからLaravel7系を使った開発を考えている人は、ぜひ参考にしてくださいね。

PHPフレームワークLaravel入門 第2版 PHPフレームワークLaravel入門 第2版

Laravel使って開発するなら読んでおいて損はないぞ! 入門という名の通り、最初に読むべき1冊や。PHPの最低限の知識は必要やから、そこがまだ十分じゃ無い人はPHPの入門書や実践書に目を通すんやで。 Viewの使い方やbladeの記述方法とか詳しく載ってるから、使ったこと有るけど詳しくは知らん人にとっても「おっ!便...

 

注目の記事

グローバル&ヘルパー関数編 PHPポケモン 61
プログラミング
PHP,PHPポケモン,ポケモン
グローバル&ヘルパー関数編 PHPポケモン 61

進化や技習得、HPバーや経験値バーの演出ができているのに、なぜ状態異常の演出はされていないの?   そう感じている方が少なからずいるはずです。 現段階では、状態異常になっても次の画面に移管しなければ表示されません。これは、PHP側で内部処理は行われているが、メッセージに合わせた動的な変更がされていな...

ゆびをふる編 PHPポケモン 69
プログラミング
PHP,PHPポケモン,ポケモン
ゆびをふる編 PHPポケモン 69

ゆびをふるとは 今回PHPポケモンで実装する技は「ゆびをふる」です。  ゆびをふる(ポケモンwiki) https://wiki.ポケモン.com/wiki/ゆびをふる   「ゆびをふる大会」というゆびをふるのみを使った大会なども開催されているということもあり、ポケモンの技の中でも初代から長く愛されてきた1つです。で...

経験値分配編 PHPポケモン 89
プログラミング
PHP,PHPポケモン,ポケモン
経験値分配編 PHPポケモン 89

経験値の分配とは 大型アップデート後、最初の追加機能は「経験値の分配」についてです。 ポケモンの入れ替えができるようになりましたが、経験値をもらえるのは現在フィニッシャーのみとなっており、レベルの低いポケモンを育てるのが困難な状態です。なので、ゲームバランスを整えるためにも、まず経験値周りの処...

PHPポケモン「2進化ポケモン実装編」8
プログラミング
PHP,PHPポケモン,プログラミング学習,ポケモン
PHPポケモン「2進化ポケモン実装編」8

  記念すべき?第8回目で遂にタイトル変更です。 (旧)ピカチュウから学ぶオブジェクト指向 (新) PHPポケモン   機能増設によりオブジェクト指向云々より、PHP学習がメインになったので泣く泣く変更です。(今の所)順調に続いているのも、多くの方?が見てくれているおかげです。感謝感激雨ア...

ダメージ固定技編(ちきゅうなげ・カウンター) PHPポケモン 41
プログラミング
PHP,PHPポケモン,ポケモン
ダメージ固定技編(ちきゅうなげ・カウンター) PHPポケモン 41

ダメージ固定技とは PHPポケモンでも作成したダメージ計算機能ですが、ポケモンの技の中にはそれを必要としない技がいくつかあります。それが「固定ダメージ技」です。 ポケモンwiki(ダメージ固定技) https://wiki.ポケモン.com/wiki/ダメージ固定技 ステータスに依存せず、わざ自体にダメージ量が決...

記事を書いてもブログが伸びないのは何故?SEOの評価を下げてしまう絶対にダメな3つのこと【知らない内に損してます】
SEO対策
SEO,ブログ
記事を書いてもブログが伸びないのは何故?SEOの評価を下げてしまう絶対にダメな3つのこと【知らない内に損してます】

  1年ブログを継続したけど、全くPVが伸びない・・・   ブログを育てるためには、毎日または定期的な更新が必ず必要ですが、それでも思うように伸びないという人は、実は他に致命的にな原因があることがほとんどです。 今回はそういった「努力しても結果が出ない」と悩んでいるブロガーやブログ運営者に...

TwitterでYouTubeのリンク付きサムネイルを表示させる方法【超実践的Webプログラミング活用法】
プログラミング
HTML,JavaScript,PHP,Twitter,YouTube
TwitterでYouTubeのリンク付きサムネイルを表示させる方法【超実践的Webプログラミング活用法】

  Twitter(ツイッター)をブログや商品、イベントの宣伝目的で使用している人は多いです。そして、そのためのマーケティング方法や戦略は数多く練られています。 今回は、その中でもYouTubeの告知をするために特化させた内容をまとめました。   一般的な方法と、プログラミングの知識(HTMLやJavascript等)があ...

PHPポケモン「タイプ実装編」15
プログラミング
PHP,PHPポケモン,ポケモン
PHPポケモン「タイプ実装編」15

ポケモンのタイプについて  2020年剣盾シリーズでのポケモンでは、全18タイプが実装されています。初代では15タイプ(あく、はがね、フェアリーを除く)からスタートして、たった3つのタイプしか増えていない、と感じる方もいるかも知れませんが、この追加に関してもバトルの歴史を大きく動かしてきたのです...

カテゴリ

SEO対策 イベント デザイン ネットワーク ビジネスモデル フリーランス プログラミング マーケティング ライティング 動画編集 雑記

タグ

5G Adobe AfterEffects AI ajax amazon Animate api artisan atom Automator AWS Bluetooth CSS CVR description EC-CUBE4 ECショップ ESLint Facebook feedly foreach function Google Google AdSense Honeycode htaccess HTML IEEE 802.11ax Illustrator Instagram IoT JavaScript jQuery jQuery UI keyword LAN Laravel Linux MacBook MAMP meta MLM MySQL NoCode note OS OSI参照モデル Paypal Photoshop PHP phpMyAdmin PHPポケモン PremierePro rss SEO SEO対策 Sequel Pro Skype SNS SSH Symfony TCP/IP title Toastr Trait Twig Twitter UCC V系 WAN WebSub Wi-Fi wiki Windows WordPress XAMPP xml Xserver YouTube YouTuber Zoom アーティスト アウトプット アクセス層 アニメーション アフィリエイト イーブイ インターネット インプット エンジニア オブジェクト指向 お金配り クリック単価 クリック数 コミュニケーション能力 コロナ コンサルティング サムネイル システムエンジニア スタートアップ スタイルシート スパム データベース ディープフェイク デザイナー デザイン テレワーク ナンパ ニュース ネットワークモデル ノマドワーク バナー ピカチュウ ビジネス フィード フリーランス ブロガー ブログ プログラマー プログラミング プログラミング学習 プログラミング教育 プロトコル ホームページ制作 ポケモン マークアップ マーケティング メール リモートワーク レンダリング 三井住友 三宮 仕事依頼 児童デイ 児童デイサービス 児童発達支援 公開鍵 初心者 助成金 勉強法 営業 広告 広告収入 必勝マニュアル 放課後等デイサービス 朝活 楽天 深層学習 無線LAN 独立 神戸 福祉 秘密鍵 翻訳 自己啓発 英語 見積書 計算機 読書 起業 迷惑メール 配列 銀の弾丸 集客 雑学力