Let's start by creating a fresh new Symfony application using Symfony CLI. Open a terminal and run:
symfony new poc-symfony
The project name poc-symfony here is not important, you can choose whatever you want as project name.
I’m using here Symfony CLI to create a new Symfony application.
If you don’t want to use it, you can use the famous Composer tool as an alternative to create the application:
composer create-project symfony/skeleton poc-symfony
Read this doc to know more about using Composer to create Symfony application.
Start the integrated Symfony server:
symfony serve -d
The -d option is used to run the server as a daemon, in the background. To stop it, you can run:
symfony server:stop
If you didn't installed the Symfony CLI, you can use the built-in PHP web server by running:
php -S localhost:8000 -t public/
By default, the port used is the 8000. Open now your application in your favorite browser at the given URL (https://localhost:8000 by default).
You now have something like this in your browser:
Our goal here : create our first Symfony Controller and render our first template with Twig to show Hello from Symfony!?
First, install the twig package by running:
composer require twig
Thanks to Symfony Flex, we have also a few files who were added to our project.
Create now our first PHP file which will be our first Symfony Controller. I'm gonna create a new file called HomeController.php (in src/Controller directory, you can name it whatever you want) with this content:
<?php declare(strict_types=1); namespace App\Controller; use Symfony\Bundle\FrameworkBundle\Controller\AbstractController; use Symfony\Component\HttpFoundation\Response; use Symfony\Component\Routing\Attribute\Route; final class HomeController extends AbstractController { #[Route('/', name: 'home')] public function home(): Response { return $this->render('home/index.html.twig'); } }
Nothing special here, the HomeController is extending the Symfony AbstractController, and use the render method from it to return a Response from the HTTPFoundation Component.
We have a route matching the / pattern, with name home. The associated method is also named home, and return a twig template.
The twig template content contains this:
{% extends 'base.html.twig' %} {% block body %} <h1>Hello from Symfony!?</h1> {% endblock %}
We just extends the base.html.twig file and customize the content in the body block.
Refresh your page and voilà ?
Congratulations, you made it ?
Testing time ?️
It’s time to test our application.
You don't test your application ? You are too good to add tests ?
Your choice, but I prefer to add some to make sure everything works as expected.
Let's add a new pack for testing by running:
composer require --dev symfony/test-pack
Again, thanks to Symfony Flex, we have a few more files installed with a default configuration working.
Create now a PHP file for test. I called this file HomeControllerTest (in tests/Controller directory):
symfony new poc-symfony
This simple test can help us check everything works in our application.
Run the tests:
composer create-project symfony/skeleton poc-symfony
Congrats, the test pass, you rock ?
The above is the detailed content of Hello from Symfony. For more information, please follow other related articles on the PHP Chinese website!