Débuter avec silex

Installation ou configuration

Considérez la structure de répertoires suivante pour vous conformer aux meilleures pratiques :

[ProjectRoot]
    |---[app]
    |    |---[resources]
    |    routes.php
    |---[web]
    |    |---[resources]
    |    |    |---[css]
    |    |    |---[img]
    |    |    |---[js]
    |    .htaccess
    |    index.php
    |---[src]
    |---[var]
    |---[vendor]
    composer.json
    composer.lock

[Composer][1] est le moyen le plus flexible de démarrer avec Silex. Créez un répertoire pour héberger votre application Silex (nommé ProjectRoot ci-dessus), cd dans ce répertoire et exécutez la commande suivante pour créer un fichier composer.json :

composer require silex/silex "~2.0"

Cela ajoutera des fichiers et des répertoires dans le répertoire vendor, sous ProjectRoot.

Après cela, tout ce que vous avez à faire est d’exiger le fichier vendor/autoload.php et de créer une instance de Silex\Application dans votre fichier index.php sous ProjectRoot/web. Après vos définitions de contrôleur (routes.php), appelez la méthode run sur votre application :

ProjectRoot/web/index.php

require_once __DIR__ . '/../vendor/autoload.php';

$app = new Silex\Application();
require_once __DIR__ . '/../app/routes.php';

$app->run();

ProjectRoot/app/routes.php

$app->get("/", function () {
    return new \Symfony\Component\HttpFoundation\Response('Hello World!');
});

ProjectRoot/web/.htaccess

<IfModule mod_rewrite.c>
    Options -MultiViews
    RewriteEngine On
    RewriteBase /
    RewriteCond %{REQUEST_FILENAME} !-d
    RewriteCond %{REQUEST_FILENAME} !-f
    RewriteRule ^ index.php [QSA,L]
</IfModule>

[1] : https://getcomposer.org/

Bonjour le monde

Créez le répertoire web dans le même dossier que le répertoire vendor. Créez le fichier index.php dans le répertoire web avec le contenu

<?php
// web/index.php

require_once __DIR__.'/../vendor/autoload.php';

$app = new Silex\Application();

$app->get("/", function () {
    return "Hello world!";
});

$app->get("/hello/{name}", function ($name) use ($app) {
    return "Hello ".$app->escape($name);
});

$app->run();

Pour démarrer l’application à l’aide de PHP [serveur intégré] [1], exécutez

php -S localhost:8080 -t web

Vous pouvez maintenant ouvrir le navigateur et accéder à http://localhost:8080, pour voir

Bonjour le monde !

Nous avons également défini une route dynamique. Accédez à http://localhost:8080/hello/<YOUR_NAME> en remplaçant <YOUR_NAME> par votre propre nom pour être accueilli par votre première application Silex.

[1] : https://www.wikiod.com/fr/php/debuter-avec-php#Serveur PHP intégré