Quanto è grave il fatto che il mio index.php in un'applicazione Zend Framework MVC misuri definizioni ed effetti collaterali?

1

Sto introducendo altri standard di qualità e controlli tramite un nuovo progetto - in particolare, i PHP-FIG consigli .

Questo progetto utilizza Zend Framework 2 e ho uno script di entrata abbastanza semplice che passa all'applicazione MVC:

define("BASE_PATH", (dirname(__DIR__)));

// Decline static file requests back to the PHP built-in webserver
if (php_sapi_name() === 'cli-server' && is_file(__DIR__ . parse_url($_SERVER['REQUEST_URI'], PHP_URL_PATH))) {
    return false;
}


// Setup autoloading

// Get the autoloader from composer
$loader = include BASE_PATH . '/vendor/autoload.php';

$zf2Path = BASE_PATH . '/vendor/ZF2/library';

// Add the Zend namespaces/paths to the autoloader
$loader->add('Zend', $zf2Path);
$loader->add('ZendXml', $zf2Path);

if (!class_exists('Zend\Loader\AutoloaderFactory')) {
    throw new RuntimeException('Unable to load ZF2.');
}


// Run the application!
Zend\Mvc\Application::init(require BASE_PATH . '/config/application.config.php')->run();

Quando eseguo questo tramite PHP-CodeSniffer, ricevo un avviso che:

A file should declare new symbols (classes, functions, constants, etc.) and cause no other side effects, or it should execute logic with side effects, but should not do both. The first symbol is defined on line 11 and the first side effect is on line 17.

Essenzialmente, PSR-1 non mi piace che abbia una definizione costante e quindi una dichiarazione di ritorno più avanti.

Questa è un'istanza in cui non ha importanza, purché il resto del framework MVC e dell'applicazione siano a posto, quindi non ci sono problemi?

    
posta HorusKol 06.05.2015 - 09:48
fonte

1 risposta

4

Questa regola e il conseguente avvertimento sono sensati: non mi piacerebbe assolutamente vedere le definizioni di classe / costante mescolate con effetti collaterali in un file.

Ma in questo caso particolare non mi dispiacerebbe - i file di bootstrap di PHP sono in genere un po 'come questo - impostando l'ambiente che a volte consiste di diversi passaggi distinti (e forse non correlati).

Potresti dichiarare la costante nel file separato (ad esempio "constants.php") che puoi quindi includere nel file bootstrap - questo dovrebbe mettere a tacere CodeSniffer. Ora, questo rende la tua applicazione migliore? Il codice è più leggibile? Io non la penso così, almeno per questa costante (se ce ne sono di più, allora sì, ha senso).

La maggior parte di tali regole si applica solo nella maggior parte dei casi, ognuna ha alcune eccezioni e penso che sia questo il caso qui ...

    
risposta data 06.05.2015 - 15:22
fonte

Leggi altre domande sui tag