2015-09-14 1 views
3

J'ai une spécification PSR-4 dans mon fichier composer.json comme ci-dessousclasse non trouvé à l'aide du PSR-4

"autoload" : { 
    "psr-4" : { 
     "MyMVC\\" : "app/" 
    } 
}, 

enter image description here

Au-dessus est ma structure de répertoire. Dans mon fichier Core/Config.php j'ai classe Config qui est sous l'espace de noms MyMVC\Core. (En prenant simplement la classe Config comme exemple, c'est la même chose pour toutes les classes).

Maintenant, dans mon fichier de configuration/config.php je suis en utilisant le code ci-dessous

<?php 
use MyMVC\Core; 

Config::$config['base_url'] = 'http://localhost/mymvc'; 

Mais cela me donne une erreur de classe Config Introuvable. Le problème peut être résolu si j'utilise MyMVC\Core\Config;. Mais cela devrait fonctionner sans utiliser explicitement Config. Puisqu'il peut y avoir des fichiers ajoutés par l'utilisateur du framework qui sont supposés être chargés automatiquement.

Merci

Répondre

1

Les importations use primitives ou des alias ou un espace de noms de classe. Comme les États manual:

PHP supporte trois types de aliasing ou l'importation: aliasing un nom de classe, aliasing un nom d'interface, et aliasing un nom d'espace de noms. PHP 5.6+ permet également d'aliaser ou d'importer des noms de fonctions et de constantes.

Votre instruction use "alias un espace de noms". Alors

use MyMVC\Core; 

est le même que:

use MyMVC\Core as Core; 

Ainsi, dans votre code:

Config::$config['base_url'] = 'http://localhost/mymvc'; 

devrait être:

Core\Config::$config['base_url'] = 'http://localhost/mymvc';