公式サイトにあるBOOKでは、デプロイもやっていますが、ここは一旦飛ばすことにします。
ちょっと記事の間が空いたので、もう一度確認ですが、以下のサイト2つをベースに進めていきます。
サーバーログを追う
symfony server:log
トラブルシューティング (Symfony 5.4 Docs)
Symfonyには、すべてのログ(Webサーバのログ、PHPのログ、アプリケーションのログ)をtailできる便利なコマンドがある。
では、小さな実験をしてみましょう。
public/index.php
を開いて、 PHP のコードを壊してみてください(たとえばfoobar という文字をコードの途中に追加してみましょう)。ブラウザでページを更新して何がログに流れてくるか見てみましょう: CopyDec 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
が使用されている場合があります。
とのことです。また、公式サイトによると、
このコマンドは
コントローラーを作成する (Symfony 5.4 Docs)src/Controller
ディレクトリ以下にConferenceController
クラスを作成します。生成されたクラスはちゃんと動くようなボイラープレートが既に入っています:
とのことで、無事にConferenceControllerクラスが作成されました!
【ボイラープレートとは?】
「ボイラープレート(boilerplate)」とは、あらかじめ用意された、汎用的で基本的なコードのことを指します。Web開発において、フレームワークの機能を利用して機能を実装する場合、その機能を実現するための基本的なコードのことを指しています。例えば、データベースに接続するための設定や、テンプレートエンジンの設定などが挙げられます。これらのコードは、何度も同じように実装する必要があるため、あらかじめ用意されたボイラープレートを使うことで、開発効率を上げることができます。Symfonyの場合、コマンドラインからコントローラーやエンティティを生成する際には、そのクラスに必要な最低限のコードが入ったボイラープレートを生成することができます。