Symfony Advent Calendar 2017 の5日目の記事です。
開発部の澤井です。新人研修でSymfony4をインストールし、Hello Worldを表示する作業を行いました。今回は、その手順を紹介します。
目次
Symfony Flex/Recipes
本記事では、各種パッケージをSymfony FlexのRecipes経由でインストールします。
Symfony Flex は、Symfonyアプリケーションを構成する際のパッケージのインストールや削除を便利にしてくれるComposerプラグインです。
Symfony Flexは、Symfony Flexサーバー に登録されているレシピ(Recipes)を使ってパッケージのインストールや削除を実行します。レシピを使うと、機能を実現するのに必要な複数の関連パッケージをまとめて管理できるので、非常に便利です。
Symfony Flexは、後述する symfony/skeleton
でインストールされるパッケージに含まれているので、symfony/skeleton
でセットアップしたプロジェクトでは特に意識せずに使い始めることができます。
Symfony4 セットアップ
symfony/skeletonでプロジェクトを作成
$ composer create-project symfony/skeleton test
serverレシピをインストール
$ composer req server
serverレシビは、WebServerBundleをインストールします。WebServerBundleは、Symfonyアプリケーションをビルトインサーバーで手軽に動かすための、server:run
といったコマンドを提供します。
下記コマンドでサーバーを起動します。
# サーバーを起動
$ bin/console server:run
下記コマンドで、使用可能なコマンド一覧を表示できます。
bin/console list server
Symfony 4.0.0 (kernel: src, env: dev, debug: true)
#...
Available commands for the "server" namespace:
server:log Starts a log server that displays logs in real time
server:run Runs a local web server
server:start Starts a local web server in the background
server:status Outputs the status of the local web server for the given address
server:stop Stops the local web server that was started with the server:start command
makerレシピをインストール
$ composer req maker
maker
レシピは、SymfonyMakerBundleをインストールします。SymfonyMakerBundleは、後述するコントローラーの作成など、様々な機能を提供しています。下記コマンドで、使用可能なコマンド一覧を表示できます。
$ bin/console list make
Symfony 4.0.0 (kernel: src, env: dev, debug: true)
#...
Available commands for the "make" namespace:
make:command Creates a new console command class
make:controller Creates a new controller class
make:entity Creates a new Doctrine entity class
make:form Creates a new form class
make:functional-test Creates a new functional test class
make:subscriber Creates a new event subscriber class
make:twig-extension Creates a new Twig extension class
make:unit-test Creates a new unit test class
make:validator Creates a new validator and constraint class
make:voter Creates a new security voter class
annotレシピをインストール
$ composer req annot
annot
レシピは、SensioFrameworkExtraBundleをインストールします。SymfonyMakerBundleは、コントローラーを作成するとき、ルーティング定義にアノテーションを使います。アノテーションによるルーティングの制御は、SensioFrameworkExtraBundleが提供する機能です。
annotはannotationの省略形です。レシピは複数のエイリアスを持つ場合があります。アノテーションレシピのエイリアスもannot
の他にannotation
、annotations
、annots
があり、全て同じ機能を提供します。
デバッグパックをインストール
Symfonyは、高機能なデバッグ機能をバンドルで提供しています。
本記事では、デバッグ機能を提供するバンドル群を、Symfony Recipes経由でインストールします。
$ composer req debug-pack
主に下記バンドルがインストールされます。
セットアップ参考リンク
Hello World表示
コントローラーを作成
SymfonyMakerBundleのコマンドを使いコントローラーを作成します。
$ bin/console make:controller DefaultController
上記コマンドで、src/Controller/DefaultController.php
が作成されます。今回は、Twigテンプレートを使いHello Worldを表示するので、下記のように変更します。
<?php
// src/Controller/DefaultController.php
namespace App\Controller;
use Sensio\Bundle\FrameworkExtraBundle\Configuration\Route;
use Symfony\Bundle\FrameworkBundle\Controller\Controller;
use Symfony\Component\HttpFoundation\Response;
class DefaultController extends Controller
{
/**
* @Route("/default", name="default")
*/
public function index()
{
- // replace this line with your own code!
- return $this->render('@Maker/demoPage.html.twig', [ 'path' => str_replace($this->getParameter('kernel.project_dir').'/', '', __FILE__) ]);
+ return $this->render('default.html.twig',
+ ['message' => 'Hello World']
+ );
}
}
ビューを作成
本記事では、ビューのエンジンとしてTwigを使います。
twigレシピをインストール
$ composer req twig
twigレシピはTwigBundleをインストールします。
TwigBundleはdebug-pack
に含まれるため、すでにdebug-pack
をインストールしている場合はこの手順は不要です。
TwigBundleがインストールされていれば、下記ディレクトリとファイルが作成されているはずです。
templates
ディレクトリtemplates/base.html.twig
ファイル
ビュー作成
今回は、templates/base.html.twig
を継承したtemplates/default.html.twig
というファイルを作成し、このファイルでHello Worldを表示させます。
{# templates/default.html.twig #}
{% extends "base.html.twig" %}
{% block body %}
{{ message }}
{% endblock %}
base.html.twig
は下記のようになっています。
{# templates/base.html.twig #}
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>{% block title %}Welcome!{% endblock %}</title>
{% block stylesheets %}{% endblock %}
</head>
<body>
{% block body %}{% endblock %}
{% block javascripts %}{% endblock %}
</body>
</html>
表示結果を確認
bin/console server:run
コマンドでサーバーを起動します。
デフォルトの起動結果は下記のようになります。
$ bin/console server:run
[OK] Server listening on http://127.0.0.1:8000
ブラウザでhttp://127.0.0.1:8000/default
へアクセスすると、Hello Worldが表示されることを確認できます。
最後に
今回は、Symfony4のインストールからHello Worldを表示するまでの手順を書きました。まだ、Symfony4をインストールする情報は多くありませんが、Symfony Flex/Recipesを使うと、初めに考えていたよりもシンプルにインストールを進めることができました。
この記事が、Symfony4を試してみたいと考えているみなさんのお役に立てれば嬉しいです。