Bonjour tout le monde, :)
j'ai besoin d'une âme charitable car je sature un peu avec les namespace. Je me suis mis au namespace (encore une belle connerie), mais je comprend rien, j'ai beau lire/regarder des tuto's rien n'y fais ça ne veux pas rentrer. Donc je viens vers vous pour avoir des explications. :)
Mon architecture
J'ai fais une petite architecture pour tester tout ça, la voici :
- Eloyas/ qui correspond au nom du projet et qui est donc par conséquent la racine du "site"
- index.php : qui ce situe à la racine donc : Eloyas/index.php
- app : un dossier, Eloyas/app/
- Autoloader.php, qui ce situe à la racine du dossier app, Eloyas/app/Autoloader.php
- tester, un dossier, Eloyas/app/tester/
- Test.php, qui ce trouve à la racine du dossier tester, Eloyas/app/tester/Test.php
Voilà mon architecture. Passons maintenant à la question.
Ma question
Voici mes trois fichiers respectivement: index, Autoloader, Test
<?php
use \App\Autoloader;
use \App\Tester\Test;
session_start();
require_once'app/Autoloader.php';
Autoloader::register();
$test = new Test();
<?php
namespace App;
class Autoloader{
public static function register(){
spl_autoload_register(array(__CLASS__, 'autoload'));
}
public static function autoload($class){
$class = str_replace('\\', '/', $class);
$class = str_replace(__NAMESPACE__, strtolower(__NAMESPACE__), $class);
require $class.'.php';
}
}
<?php
namespace App\Tester;
class Test{
public function __construct(){
}
}
Dans mon fichier index.php (premier code), je suis obliger de faire un use de ma ma classe Test, pourquoi ?
Suis-je obligé d'utilisé use chaque fois ?
Si je regarde mes namespaces, ma classe Test à la même racine que mon autoloader, je ne pourrais pas faire ceci :
<?php
use \App\Autoloader;
session_start();
require_once'app/Autoloader.php';
Autoloader::register();
$test = new Test(); //PHP est con au point de ne pas comprendre que je veux ma classe Test qui est dans le namespace App/Tester/...
Voilà. D'avance merci de m'éclairé :)
Cordialement.
PS : Comment je peux activer la coloration syntaxite en markdown ?
Edit : Dans le rendu du markdown à droite, la coloration ne ce fais pas, elle ce fais lors de l'envoi. :)