全体像

10分でSymfonyを使い始めましょう!最も重要な概念を理解し、プロジェクトの構築を開始するには本当にこれだけです。

以前にWebフレームワークを利用していた場合は、Symfonyに親しみやすいはずです。 そうでない場合は、全く新しいWebアプリケーションの開発方法へようこそ。 Symfonyはベストプラクティスを採用し、安全簡単にアップグレードができる後方互換性、そして長期的なサポートを提供します。

Symfonyのダウンロード

まずは Composer がインストールされており、PHP7.1.3以降がインストールされていることを確認してください。

準備が整ったらターミナルで次を実行:

1
$ composer create-project symfony/skeleton quick_tour

これにより、最小で強力なSymfonyアプリケーションの quick_tour/ ディレクトリが作成されます。:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
quick_tour/
├─ .env
├─ bin/console
├─ composer.json
├─ composer.lock
├─ config/
├─ public/index.php
├─ src/
├─ symfony.lock
├─ var/
└─ vendor/

すでにブラウザでプロジェクトをロードできますか? はい! Nginx またはApache をセットアップし、 public/ ディレクトリをドキュメントルートに設定します。 しかし、開発のためには SymfonyのローカルWebサーバをインストール して次のように実行することをお勧めします。:

1
$ symfony server:start

ブラウザで http://localhost:8000 へアクセスして新しいアプリケーションを試してみましょう!:

../_images/no_routes_page.png

基礎: ルート、コントローラ、レスポンス

プロジェクトには約15個のファイルしかありませんが、洗練されたAPI、堅牢なWebアプリ、またはマイクロサービスの準備ができています。 Symfonyは小さなものから始まりますが、あなたと共にスケールします。

しかし先に進む前に、最初のページを作成して基本を掘り下げましょう。

config/routes.yaml で始めます。ここで新しいページのURLを定義できます。 ファイルに既に存在する例のコメントアウトを外します。:

1
2
3
4
# config/routes.yaml
index:
    path: /
    controller: 'App\Controller\DefaultController::index'

これは ルート と呼ばれます。 それはページ (/) のURLと “controller” を定義します。 このURLにアクセスしたときに呼び出される 関数 です。 その関数はまだ存在しないので、作成しましょう!

src/Controller に新しい DefaultController クラスと index メソッドを作成します。:

// src/Controller/DefaultController.php
namespace App\Controller;

use Symfony\Component\HttpFoundation\Response;

class DefaultController
{
    public function index()
    {
        return new Response('Hello!');
    }
}

これだけです!ホームページ http://localhost:8000/ にアクセスしてみましょう。 SymfonyはURLがルートと一致することを確認し、新しい index() メソッドを実行します。

コントローラは、1つのルールを持つ通常の関数で、Symfony Response オブジェクトを返す必要があります。 ただし、そのレスポンスには、単純なテキスト、JSON、または完全なHTMLページなど、何でも含めることができます。

しかし、ルーティングシステムはるかに強力です。ルートをもっと面白くしましょう。:

1
2
3
4
5
# config/routes.yaml
index:
-     path: /
+     path: /hello/{name}
    controller: 'App\Controller\DefaultController::index'

このページのURLが変更され、今 /hello/* となり、 {name} は全てに一致するワイルドカードのように機能します。 そしてそれは良くなります!コントローラも更新します。:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
// src/Controller/DefaultController.php
namespace App\Controller;

use Symfony\Component\HttpFoundation\Response;

class DefaultController
{
-     public function index()
+     public function index($name)
    {
-         return new Response('Hello!');
+         return new Response("Hello $name!");
    }
}

http://localhost:8000/hello/Symfony にアクセスして、ページを試してください。 あなたは Hello Symfony! を確認できるでしょう。 URLの {name} の値は、コントローラーの $name 引数として使用できます。

しかし、さらに簡単になる可能性があります。アノテーションサポートをインストールしましょう。:

1
$ composer require annotations

次に、 # の文字を追加してYAMLルートをコメントアウトします。:

1
2
3
4
# config/routes.yaml
# index:
#     path: /hello/{name}
#     controller: 'App\Controller\DefaultController::index'

代わりに、コントローラーメソッドの 真上 にルートを追加します。:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
// src/Controller/DefaultController.php
namespace App\Controller;

use Symfony\Component\HttpFoundation\Response;
+ use Symfony\Component\Routing\Annotation\Route;

class DefaultController
{
+    /**
+     * @Route("/hello/{name}")
+     */
     public function index($name) {
         // ...
     }
}

これは以前と同じように機能します! しかし、アノテーションを使用することにより、ルートとコントローラーは互いに隣接して存在します。 別のページが必要ですか? DefaultController に別のルートとメソッドを追加します。:

// src/Controller/DefaultController.php
namespace App\Controller;

use Symfony\Component\HttpFoundation\Response;
use Symfony\Component\Routing\Annotation\Route;

class DefaultController
{
    // ...

    /**
     * @Route("/simplicity")
     */
    public function simple()
    {
        return new Response('Simple! Easy! Great!');
    }
}

ルーティングは さらに いろいろなことができますが、それは別の機会にとっておきましょう! まさに今、アプリにはさらに多くの機能が必要です! テンプレートエンジンやロギング、デバッグツールなどのように。

Flex: Compose your Application へ読み進めてください。