A free and open-source book on ZF3 for beginners

Translation into this language is not yet finished. You can help this project by translating the chapters and contributing your changes.

3.6. Script d'entrée du site

Lorsque le serveur Web Apache reçoit une requête HTTP d'un navigateur client, il exécute le fichier APP_DIR/public/index.php, également appelé script d'entrée.

Le script d'entrée est le seul fichier PHP accessible au monde extérieur. Le serveur web Apache dirige toutes les requêtes HTTP vers ce script (souvenez-vous du fichier .htaccess). Avoir ce script d'entrée unique rend le site web plus sûr (en comparant avec la situation où vous permettez à tout le monde d'accéder à tous les fichiers PHP de votre application).

Bien que le fichier index.php soit très important, il est étonnamment petit (voir ci-dessous) :

<?php

use Zend\Mvc\Application;
use Zend\Stdlib\ArrayUtils;

/**
 * Le chemin de la racine de l'application est rendue relative.
 */
chdir(dirname(__DIR__));

// Refuse les demandes de fichiers statiques sur le serveur PHP
if (php_sapi_name() === 'cli-server') {
    $path = realpath(__DIR__ . parse_url($_SERVER['REQUEST_URI'], PHP_URL_PATH));
    if (__FILE__ !== $path && is_file($path)) {
        return false;
    }
    unset($path);
}

// Chargement de l'autoloader Composer
include __DIR__ . '/../vendor/autoload.php';

if (! class_exists(Application::class)) {
    throw new RuntimeException(
        "Unable to load application.\n"
        . "- Type `composer install` if you are developing locally.\n"
        . "- Type `vagrant ssh -c 'composer install'` if you are using Vagrant.\n"
        . "- Type `docker-compose run zf composer install` if you are using Docker.\n"
    );
}

// Récupère la configuration
$appConfig = require __DIR__ . '/../config/application.config.php';
if (file_exists(__DIR__ . '/../config/development.config.php')) {
    $appConfig = ArrayUtils::merge($appConfig, require __DIR__ . '/../config/development.config.php');
}

// Exécute l'application
Application::init($appConfig)->run();

En gros, trois choses y sont faites.

Tout d'abord, à la ligne 10, le dossier de travail courrant est remplacé par APP_DIR. Cela simplifie la définition de chemins de fichiers relatifs dans votre application.

Ensuite, à la ligne 22, l'auto-chargement des classes PHP est initialisé. Cela permet de charger facilement n'importe quelle classe située dans la bibliothèque Zend Framework ou dans votre application sans avoir besoin de l'instruction require_once.

Et enfin, à la ligne 40, une instance de la classe Zend\Mvc\Application est créée. L'application est initialisée avec les paramètres issus du fichier de configuration application.config.php et l'application est exécutée.


Top