The Big Picture

Start using Symfony in 10 minutes! Really! That's all you need to understand the most important concepts and start building a real project!

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

If you've used a web framework before, you should feel right at home with Symfony. If not, welcome to a whole new way of developing web applications. Symfony embraces best practices, keeps backwards compatibility (Yes! Upgrading is always safe & easy!) and offers long-term support.

以前に Web フレームワークを使用したことがある場合は、Symfony に慣れているはずです。そうでない場合は、Web アプリケーションを開発するまったく新しい方法へようこそ。 symfony はベスト プラクティスを採用し、下位互換性を維持し (はい! アップグレードは常に安全で簡単です!)、長期サポートを提供します。

Downloading Symfony

First, make sure you've installed Composer and have PHP 8.1 or higher.

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

Ready? In a terminal, run:

準備?ターミナルで、次を実行します。
1
$ composer create-project symfony/skeleton quick_tour

This creates a new quick_tour/ directory with a small, but powerful new Symfony application:

これにより、小さいが強力な newSymfony アプリケーションを含む新しい 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/

Can we already load the project in a browser? Yes! You can setup Nginx or Apache and configure their document root to be the public/ directory. But, for development, it's better to install the Symfony local web server and run it as follows:

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

Try your new app by going to http://localhost:8000 in a browser!

ブラウザで http://localhost:8000 にアクセスして、新しいアプリを試してください。

Fundamentals: Route, Controller, Response

Our project only has about 15 files, but it's ready to become a sleek API, a robust web app, or a microservice. Symfony starts small, but scales with you.

私たちのプロジェクトには約 15 個のファイルしかありませんが、洗練された API、堅牢な Web アプリ、またはマイクロサービスになる準備ができています。 symfony は小さく始めますが、あなたに合わせて拡張できます。

But before we go too far, let's dig into the fundamentals by building our first page.

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

Start in config/routes.yaml: this is where we can define the URL to our new page. Uncomment the example that already lives in the file:

config/routes.yaml から開始します。ここで、新しいページへの URL を定義できます。ファイルに既に存在する例のコメントを外します。
1
2
3
4
# config/routes.yaml
index:
    path: /
    controller: 'App\Controller\DefaultController::index'

This is called a route: it defines the URL to your page (/) and the "controller": the function that will be called whenever anyone goes to this URL. That function doesn't exist yet, so let's create it!

これはルートと呼ばれます。これは、ページへの URL (/) と「コントローラー」 (誰かがこの URL にアクセスするたびに呼び出される関数) を定義します。その機能はまだないので作ってみましょう!

In src/Controller, create a new DefaultController class and an index method inside:

src/Controller で、新しい DefaultController クラスと indexmethod を内部に作成します。
1
2
3
4
5
6
7
8
9
10
11
12
13
<?php
// src/Controller/DefaultController.php
namespace App\Controller;

use Symfony\Component\HttpFoundation\Response;

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

That's it! Try going to the homepage: http://localhost:8000/. Symfony sees that the URL matches our route and then executes the new index() method.

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

A controller is just a normal function with one rule: it must return a Symfony Response object. But that response can contain anything: simple text, JSON or a full HTML page.

コントローラーは、SymfonyResponse オブジェクトを返さなければならないという 1 つのルールを持つ単なる通常の関数です。ただし、その応答には、単純なテキスト、JSON、または完全な HTML ページなど、何でも含めることができます。

But the routing system is much more powerful. So let's make the route more interesting:

しかし、ルーティング システムははるかに強力です。それでは、ルートをもっと面白くしましょう。
1
2
3
4
5
# config/routes.yaml
  index:
-     path: /
+     path: /hello/{name}
      controller: 'App\Controller\DefaultController::index'

The URL to this page has changed: it is now /hello/*: the {name} acts like a wildcard that matches anything. And it gets better! Update the controller too:

このページへの URL が変更されました。現在は /hello/* です。{name} は、何にでも一致するワイルドカードのように機能します。そして、それは良くなります!コントローラーも更新します。
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
<?php
  // src/Controller/DefaultController.php
  namespace App\Controller;

  use Symfony\Component\HttpFoundation\Response;

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

Try the page out by going to http://localhost:8000/hello/Symfony. You should see: Hello Symfony! The value of the {name} in the URL is available as a $name argument in your controller.

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

But this can be even simpler! So let's install annotations support:

しかし、これはさらに簡単です!それでは、注釈サポートをインストールしましょう。
1
$ composer require annotations

Now, comment-out the YAML route by adding the # character:

ここで、# 文字を追加して YAML ルートをコメントアウトします。
1
2
3
4
# config/routes.yaml
# index:
#     path: /hello/{name}
#     controller: 'App\Controller\DefaultController::index'

Instead, add the route right above the controller method:

代わりに、コントローラー メソッドのすぐ上にルートを追加します。
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
<?php
  // src/Controller/DefaultController.php
  namespace App\Controller;

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

  class DefaultController
  {
+      #[Route('/hello/{name}', methods: ['GET'])]
       public function index(string $name): Response
       {
           // ...
       }
  }

This works just like before! But by using attributes, the route and controller live right next to each other. Need another page? Add another route and method in DefaultController:

これは以前と同じように機能します。しかし、属性を使用することで、ルートとコントローラーが隣り合って存在します。別のページが必要ですか?別のルートとメソッドを DefaultController に追加します。
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
<?php
// src/Controller/DefaultController.php
namespace App\Controller;

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

class DefaultController
{
    // ...

    #[Route('/simplicity', methods: ['GET'])]
    public function simple(): Response
    {
        return new Response('Simple! Easy! Great!');
    }
}

Routing can do even more, but we'll save that for another time! Right now, our app needs more features! Like a template engine, logging, debugging tools and more.

ルーティングはさらに多くのことを行うことができますが、それは別の機会に取っておきます!現在、私たちのアプリにはさらに多くの機能が必要です!テンプレート エンジン、ロギング、デバッグ ツールなどと同様です。

Keep reading with Flex: Compose your Application.

Flex で読み続けてください: アプリケーションを作成します。