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 de Entrada do Site

Quando o servidor da web Apache recebe uma solicitação HTTP do navegador, ele executa o arquivo APP_DIR/public/index.php, também chamado de script de entrada.

O script de entrada é o único arquivo PHP acessível. O servidor web Apache Direciona todas as solicitações HTTP para este script (lembre-se do arquivo .htaccess). Tendo isto script de entrada única torna o site mais seguro (comparando com a situação quando você permite todos para acessar todos os arquivos PHP da sua aplicação).

Embora o arquivo index.php seja muito importante, é surpreendentemente pequeno (veja abaixo):

<?php

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

/**
 * This makes our life easier when dealing with paths. Everything is relative
 * to the application root now.
 */
chdir(dirname(__DIR__));

// Decline static file requests back to the PHP built-in webserver
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);
}

// Composer autoloading
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"
    );
}

// Retrieve 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');
}

// Run the application!
Application::init($appConfig)->run();

Principalmente, há três coisas feitas nele.

Primeiro, na linha 10, a pasta é alterada para APP_DIR. Isso simplifica a definição de caminhos de arquivos em sua aplicação.

Em seguida, na linha 22, o autoload da classe é inicializado. Isso permite carregar facilmente qualquer classe ou localizada qualquer biblioteca do Zend Framework ou em sua aplicação sem a necessidade da utilização require_once.

E finalmente, na linha 40, uma instância da classe Zend\Mvc\Application é criada. O aplicativo é inicializado com as configurações do application.config.php e a sua aplicação é executada.


Top