PHP artisan | Laravel開発の基本とコマンド活用法

「php artisan」は、LaravelというPHPベースの人気のあるwebアプリケーションフレームワークで使用されるコマンドラインツールです。

LaravelはPHPのフレームワークでwebアプリケーションの開発を支援するための多くの機能を提供してくれますが、開発を行う際には「php artisan」は特に重要な役割を果たします。

この記事では「php artisan」コマンドの活用法について解説することによって、Laravel開発プロセスの効率化や改善に役立てる事を目的としています。

php artisanコマンドの一覧

今回はPHP 8.1.20、Laravel 10.20.0 で出力されるコマンド一覧から解説していきます。

php artisan」と実行するとコマンド一覧が出力されます

$ composer create-project laravel/laravel example-app
$ cd example-app
$ php artisan 
Laravel Framework 10.20.0

Usage:
  command [options] [arguments]

Options:
  -h, --help            Display help for the given command. When no command is given display help for the list command
  -q, --quiet           Do not output any message
  -V, --version         Display this application version
      --ansi|--no-ansi  Force (or disable --no-ansi) ANSI output
  -n, --no-interaction  Do not ask any interactive question
      --env[=ENV]       The environment the command should run under
  -v|vv|vvv, --verbose  Increase the verbosity of messages: 1 for normal output, 2 for more verbose output and 3 for debug

Available commands:
  about                   Display basic information about your application
  clear-compiled          Remove the compiled class file
  completion              Dump the shell completion script
  db                      Start a new database CLI session
  docs                    Access the Laravel documentation
  down                    Put the application into maintenance / demo mode
  env                     Display the current framework environment
  help                    Display help for a command
  inspire                 Display an inspiring quote
  list                    List commands
  migrate                 Run the database migrations
  optimize                Cache the framework bootstrap files
  serve                   Serve the application on the PHP development server
  test                    Run the application tests
  tinker                  Interact with your application
  up                      Bring the application out of maintenance mode
 auth
  auth:clear-resets       Flush expired password reset tokens
 cache
  cache:clear             Flush the application cache
  cache:forget            Remove an item from the cache
  cache:prune-stale-tags  Prune stale cache tags from the cache (Redis only)
  cache:table             Create a migration for the cache database table
 channel
  channel:list            List all registered private broadcast channels
 config
  config:cache            Create a cache file for faster configuration loading
  config:clear            Remove the configuration cache file
  config:show             Display all of the values for a given configuration file
 db
  db:monitor              Monitor the number of connections on the specified database
  db:seed                 Seed the database with records
  db:show                 Display information about the given database
  db:table                Display information about the given database table
  db:wipe                 Drop all tables, views, and types
 env
  env:decrypt             Decrypt an environment file
  env:encrypt             Encrypt an environment file
 event
  event:cache             Discover and cache the application's events and listeners
  event:clear             Clear all cached events and listeners
  event:generate          Generate the missing events and listeners based on registration
  event:list              List the application's events and listeners
 key
  key:generate            Set the application key
 lang
  lang:publish            Publish all language files that are available for customization
 make
  make:cast               Create a new custom Eloquent cast class
  make:channel            Create a new channel class
  make:command            Create a new Artisan command
  make:component          Create a new view component class
  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:scope              Create a new scope class
  make:seeder             Create a new seeder class
  make:test               Create a new test class
 migrate
  migrate:fresh           Drop all tables and re-run all migrations
  migrate:install         Create the migration repository
  migrate:refresh         Reset and re-run all migrations
  migrate:reset           Rollback all database migrations
  migrate:rollback        Rollback the last database migration
  migrate:status          Show the status of each migration
 model
  model:prune             Prune models that are no longer needed
  model:show              Show information about an Eloquent model
 notifications
  notifications:table     Create a migration for the notifications table
 optimize
  optimize:clear          Remove the cached bootstrap files
 package
  package:discover        Rebuild the cached package manifest
 queue
  queue:batches-table     Create a migration for the batches database table
  queue:clear             Delete all of the jobs from the specified queue
  queue:failed            List all of the failed queue jobs
  queue:failed-table      Create a migration for the failed queue jobs database table
  queue:flush             Flush all of the failed queue jobs
  queue:forget            Delete a failed queue job
  queue:listen            Listen to a given queue
  queue:monitor           Monitor the size of the specified queues
  queue:prune-batches     Prune stale entries from the batches database
  queue:prune-failed      Prune stale entries from the failed jobs table
  queue:restart           Restart queue worker daemons after their current job
  queue:retry             Retry a failed queue job
  queue:retry-batch       Retry the failed jobs for a batch
  queue:table             Create a migration for the queue jobs database table
  queue:work              Start processing jobs on the queue as a daemon
 route
  route:cache             Create a route cache file for faster route registration
  route:clear             Remove the route cache file
  route:list              List all registered routes
 sail
  sail:add                Add a service to an existing Sail installation
  sail:install            Install Laravel Sail's default Docker Compose file
  sail:publish            Publish the Laravel Sail Docker files
 sanctum
  sanctum:prune-expired   Prune tokens expired for more than specified number of hours
 schedule
  schedule:clear-cache    Delete the cached mutex files created by scheduler
  schedule:interrupt      Interrupt the current schedule run
  schedule:list           List all scheduled tasks
  schedule:run            Run the scheduled commands
  schedule:test           Run a scheduled command
  schedule:work           Start the schedule worker
 schema
  schema:dump             Dump the given database schema
 session
  session:table           Create a migration for the session database table
 storage
  storage:link            Create the symbolic links configured for the application
 stub
  stub:publish            Publish all stubs that are available for customization
 vendor
  vendor:publish          Publish any publishable assets from vendor packages
 view
  view:cache              Compile all of the application's Blade templates
  view:clear              Clear all compiled view files

Laravelではartisanコマンドで出来る事が多岐に渡るため、私が普段使っているコマンドをメインに紹介していきます。

データベース関連

Laravelアプリケーションで入力したデータを永続化するためにはデータベースに保存する必要があります。

データベース操作に関するコマンドもLaravelには用意されています。

# CLIでデータベースに接続する
php artisan db

# マイグレーションの実行
php artisan migrate

# 前回のマイグレーションを取り消し
php artisan migrate:rollback

# テーブルを全て破棄してマイグレーションの実行
php artisan migrate:fresh

メンテナンス実行

Laravelではメンテナンスの確認処理が最初に実行されます。

if (file_exists($maintenance = __DIR__.'/../storage/framework/maintenance.php')) {                                      
    require $maintenance;                                                                                               
}  

この処理でわかるように、物理ファイルの存在を確認し、存在すれば全ての表示がメンテナンス表示に変わります。

以下のコマンドでメンテナンスの切り替えを行う事ができます。

# メンテナンス突入
php artisan down

# メンテナンス終了
php artisan up

キャッシュクリア

Laravelではパフォーマンスの向上を目的に様々なキャッシュが作成され、それぞれにキャッシュクリアするためのコマンドが用意されています。

キャッシュクリアをするコマンドは多岐に渡りますが、一括でキャッシュクリアするコマンドも用意されています。

# 一括でキャッシュクリア
php artisan optimize:clear

キャッシュクリアに関してはこちらの記事でも取り扱っています

開発時の確認関連

Laravel開発を効率的に行うための確認や実行するためのコマンドです

# 開発サーバーの立ち上げ
php artisan serve

# 開発サーバー(docker)の立ち上げ
php artisan sail:install
./vendor/bin/sail up

# CLIでコードを実行し、結果の確認
php artisan tinker

# テスト実行 (phpunitコマンドよりも詳細な表示になる)
php artisan test

クラス作成

Laravelで必要なモデルやマイグレーションファイルなど、クラスファイルを作成するコマンド

# クラス作成、〇〇の部分はmodel等、作成したいもので変わる
php artisan make:〇〇

ルーティング確認

Laravelで用意されているルーティングや許可されているアクセス方法や呼び出されているコントローラー等、様々な事がわかります。

$ php artisan route:list

  GET|HEAD   / ..................................................................................................................................... 
  POST       _ignition/execute-solution .............................. ignition.executeSolution › Spatie\LaravelIgnition › ExecuteSolutionController
  GET|HEAD   _ignition/health-check .......................................... ignition.healthCheck › Spatie\LaravelIgnition › HealthCheckController
  POST       _ignition/update-config ....................................... ignition.updateConfig › Spatie\LaravelIgnition › UpdateConfigController
  GET|HEAD   api/user .............................................................................................................................. 
  GET|HEAD   sanctum/csrf-cookie ................................................. sanctum.csrf-cookie › Laravel\Sanctum › CsrfCookieController@show

                                                                                                                                  Showing [6] routes

定期実行

Laravelはwebアプリケーションとしての機能以外にも、バッチ処理やジョブ管理なども設定する事ができるので、そのための定期実行関連です

# スケジュール実行(バッチ実行)
php artisan schedule:run -q

# 登録されたキューの実行ワーカの起動
php artisan queue:work

# キューの実行、cronで毎分確認するためにオプション指定版
php artisan queue:work --stop-when-empty --queue=high,default --sleep=3 --tries=3 --max-time=50

ストレージのシンボリックリンク作成

Laravelではアプリケーション上でファイル保存などの書き込み処理をする場合には基本的に storage/ 配下に保存されます。

ユーザーのアイコン画像のアップロード処理など、URLで参照する必要があるファイルがある場合にはあらかじめ下記のコマンドを実行する必要があります。

# public/ 配下にシンボリックリンクの作成

$ php artisan storage:link

   INFO  The [public/storage] link has been connected to [storage/app/public].  

終わりに

以上、「php artisan」コマンドで実行できる活用方法についてまとめてみました。

これらは私が普段から使っているコマンドを紹介しましたが、多くのコマンドがありますし、達成したい事によって使用すべきコマンドは変わります。

紹介したのはLaravel公式のコマンドですが、プロジェクト独自のコマンドを作成したり、ライブラリによって追加されるコマンドも存在します。

公式のドキュメントやソースコードを確認しつつ自分のプロジェクトにあった方法を模索する事をオススメします

公式ドキュメント: https://laravel.com/docs/10.x/artisan

モバイルバージョンを終了