- FEATURES
- Autoload
- Class Reflection
- Magic Methods
- Exceptions
- Late Static Binding
- Type Hinting
- SPL
- PHPUNIT
- PHAR
- COMPOSER
- Carbon
- Guzzle
- Faker
- Math
- Requests
- DESIGN PATTERNS
- Singleton Pattern
- Observer Pattern
- Strategy Pattern
- Dependency Injection
- Middleware
- Registry
- SYMFONY
- Routes
- Annotations
- Flex
- Controllers
- Doctrine
- Templating
- VERSIONS
- Php7.4
- Php8.0
- SECURITY
- Filter Input
- Remote Code Injection
- Sql Injection
- Session Fixation
- File Uploads
- Cross Site Scripting
- Spoofed Forms
- CSRF
- Session Hijacking
- MODERN PHP
- Composer
- Autoloader
- Package
- Releases
- Generators
- Dependency Injection
- Middleware
- CUSTOM FRAMEWORK
- App
- Http Foundation
- Front Controller
- Routing
- Render Controller
- Resolver
- SoC
- FRAMEWORKS
- Slim
-
Symfony V5
- Laravel V8
- Laminas V3
- Codeigniter V4
Symfony
Version: Symfony v5.2 Fundamentals: Route, Controller, Response, Annotation Requirements: Composer, Apache, PHP v8.0
cd /var/www/tests.local/php/symfony/
composer create-project symfony/skeleton myproject
http://tests.local/php/symfony/myproject/public/
# Welcome page Symfony
Add routes in config/routes.yaml
Add default controller and /myproject/.htaccess
index:
path: /
controller: App\Controller\DefaultController::index
hello:
path: /hello/{name}
controller: App\Controller\DefaultController::hello
// src/Controller/DefaultController.php
namespace App\Controller;
use Symfony\Component\HttpFoundation\Response;
class DefaultController
{
public function index()
{
return new Response("Hello World!");
}
public function hello($name)
{
return new Response("Hello $name!");
}
}
RewriteEngine on
RewriteBase /php/symfony/myproject/public/
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^(.*)$ index.php [L,QSA]
It works!
http://tests.local/php/symfony/myproject/public/
# Hello World!
http://tests.local/php/symfony/myproject/public/hello/Symfony
# Hello Symfony!
Annotations
By using annotations, the route and controller live right next to each other No need for config/routes.yaml anymore.
composer require annotations
// src/Controller/DefaultController.php
namespace App\Controller;
use Symfony\Component\HttpFoundation\Response;
use Symfony\Component\Routing\Annotation\Route;
class DefaultController
{
/**
* @Route("/")
*/
public function index()
{
return new Response("Hello World!");
}
/**
* @Route("/hello/{name}")
*/
public function hello($name)
{
return new Response("Hello $name!");
}
}
http://tests.local/php/symfony/myproject/public/
# Hello World!
http://tests.local/php/symfony/myproject/public/hello/Symfony
# Hello Symfony!
Last update: 531 days ago