Symfonyチュートリアル:ログ、調査、maker-bundle,annotation,コントローラーの作成まで

公式サイトにあるBOOKでは、デプロイもやっていますが、ここは一旦飛ばすことにします。

ちょっと記事の間が空いたので、もう一度確認ですが、以下のサイト2つをベースに進めていきます。

公式サイトにあるBOOK-5系Japanese
PhpStormというエディタを使用され2022年6月に初投稿されている記事です

サーバーログを追う

symfony server:log

トラブルシューティング (Symfony 5.4 Docs)

Symfonyには、すべてのログ(Webサーバのログ、PHPのログ、アプリケーションのログ)をtailできる便利なコマンドがある。

では、小さな実験をしてみましょう。 public/index.php を開いて、 PHP のコードを壊してみてください(たとえばfoobar という文字をコードの途中に追加してみましょう)。ブラウザでページを更新して何がログに流れてくるか見てみましょう: Copy

Dec 21 10:04:59 |DEBUG| PHP    PHP Parse error:  syntax error, unexpected 'use' (T_USE) in public/index.php on line 5 path="/usr/bin/php7.42" php="7.42.0"
Dec 21 10:04:59 |ERROR| SERVER GET  (500) / ip="127.0.0.1"

エラーに気づきやすいように色付けされて出力されます。

トラブルシューティング (Symfony 5.4 Docs)

上記はやってみましたが、確かに色付けはされているものの、正直まだ完璧にはわかっていません。

公式サイトの手順で記載されていなかったけど。。

ログの手順の確認をした後、以下3つはコントローラーの作成までに特にコマンドを打つような手順がなかったです。。。が、一度Qiitaの参考記事通りやってみようと思います。

【調査系のライブラリを入れる】

composer require --dev symfony/profiler-pack

composer require --dev symfony/profiler-pack はSymfonyプロジェクトをデバッグするためのWeb Debug ToolbarやProfilerなどの開発ツールが含まれたパッケージであり、必須ではありませんが便利な開発用ツールとして推奨されています。開発中にアプリケーションのパフォーマンスやデバッグを効率的に行いたい場合は導入することをおすすめします。

Symfony 5では、Symfony Flexが有効になっている場合、Symfony Profilerは自動的にインストールされます。そのため、追加のパッケージをインストールする必要はありません。ただし、Symfony Flexが無効になっている場合、composer require --dev symfony/profiler-packコマンドを使用してSymfony Profilerをインストールできます。

Symfony Flexが有効かどうかを確認するには、プロジェクトのルートディレクトリでcomposer.jsonファイルを開き、以下のような行が含まれているかどうかを確認します。

"extra": {
    "symfony": {
        "allow-contrib": false
    }
},

もしこの行が存在し、"allow-contrib"の値がfalseに設定されている場合、Symfony Flexは無効になっています。"allow-contrib"の値がtrueである場合、Symfony Flexは有効になっています。

ただし、Symfony 5以降では、Symfony Flexはプロジェクト作成時にデフォルトで有効になっているため、特に設定しなくても使用できます。

【maker-bundle】

composer require symfony/maker-bundle --dev

こちらのコマンドは最終的に「Using version ^1.39 for symfony/maker-bundle」となって使えそうな状態になりました。

【annotation】

composer require doctrine/annotations

Symfonyでプロジェクトを作成する際には、通常はDoctrine Annotationsが最初からインストールされています。しかし、プロジェクトでDoctrine Annotationsを使用する必要がある場合は、composer require doctrine/annotationsコマンドを実行する必要があります。

ただし、プロジェクトを作成する際に使用するSymfonyのバージョンによって異なる場合があります。例えば、Symfony 4以降では、Doctrine AnnotationsはSymfonyの標準構成に含まれており、別途インストールする必要はありません。

したがって、プロジェクトでDoctrine Annotationsを使用する必要があるかどうかは、Symfonyのバージョンやプロジェクトの要件によって異なる場合があります。

また、プロジェクトにDoctrine Annotationsがインストールされているかどうかを確認するには、ターミナルまたはコマンドプロンプトで以下のコマンドを実行する。

composer show doctrine/annotations

このコマンドは、プロジェクトにDoctrine Annotationsがインストールされている場合はパッケージの情報を表示、仮にインストールされていない場合は、パッケージが見つからないというエラーメッセージが表示されるそうです。

以上の3つのコマンドですが、うまく取り入れることができたのは「maker-bundle」だけでした。
とりあえずは先に進んでみることにします。

コントローラーの作成

コントローラーの作成には、公式サイトでは以下のコマンド

symfony console make:controller ConferenceController

参考にしている記事では以下のコマンド

php bin/console make:controller ConferenceController

ちなみにsymfonyコマンドとphpコマンドですが、どちらが最近かというとやはり前者のようで

Symfony 5以降では、コマンドラインインターフェース(CLI)コマンドであるsymfony consoleが導入され、以前のphp bin/consoleよりも優れた機能を提供しています。現在では、symfony consoleを使用することが推奨されています。

したがって、コントローラーの作成には、symfony consoleを使用することをお勧めします。具体的には、以下のコマンドを実行することで、ConferenceControllerを作成できます。

symfony console make:controller ConferenceController

ただし、古いプロジェクトでは、引き続きphp bin/consoleが使用されている場合があります。

とのことです。また、公式サイトによると、

このコマンドは src/Controller ディレクトリ以下に ConferenceController クラスを作成します。生成されたクラスはちゃんと動くようなボイラープレートが既に入っています:

コントローラーを作成する (Symfony 5.4 Docs)

とのことで、無事にConferenceControllerクラスが作成されました!

【ボイラープレートとは?】

「ボイラープレート(boilerplate)」とは、あらかじめ用意された、汎用的で基本的なコードのことを指します。Web開発において、フレームワークの機能を利用して機能を実装する場合、その機能を実現するための基本的なコードのことを指しています。例えば、データベースに接続するための設定や、テンプレートエンジンの設定などが挙げられます。これらのコードは、何度も同じように実装する必要があるため、あらかじめ用意されたボイラープレートを使うことで、開発効率を上げることができます。Symfonyの場合、コマンドラインからコントローラーやエンティティを生成する際には、そのクラスに必要な最低限のコードが入ったボイラープレートを生成することができます。

この記事を書いた人