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の他にannotationannotationsannotsがあり、全て同じ機能を提供します。

デバッグパックをインストール

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が表示されることを確認できます。

image

最後に

今回は、Symfony4のインストールからHello Worldを表示するまでの手順を書きました。まだ、Symfony4をインストールする情報は多くありませんが、Symfony Flex/Recipesを使うと、初めに考えていたよりもシンプルにインストールを進めることができました。

この記事が、Symfony4を試してみたいと考えているみなさんのお役に立てれば嬉しいです。