Bonjour!

Je cherche un moyen d'implémenter l'autoload avec la norme PSR-? la mieux adaptée à mon projet:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
/model/ # contiens mes classes gérant les API
/api/monapi1/model/   # classes dédiées de mon api 1
/api/monapi1/view/    # vues spécifiques à l'api 1
/api/monapi2/model/   # ect ect...
Dans mon projet j'ai l'index.php qui charge ma classe /model/api

Ensuite ma classe api charge dynamiquement les api situées dans /api/ après avoir effectué différents tests.

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
    public function __run(array $config) {
        $this->config = json_decode(json_encode($config));
 
        // Définition du header et langage de sortie pour la fonction display
        $this->config->output = isset($this->config->output) &&  trim($this->config->output) != '' ? $this->config->output : 'json';
 
        // Test de la validité du nom de l'API
        if(preg_match("#^[[:alnum:]]{3,9}$#",$this->config->appname)) {
            $appName = $this->config->appname;
        } else { $this->display(array('error' => array('id' => '0x02', 'msg' => 'Invalid API name')),$this->config->output); return false; }
 
        // Test de l'existence du dossier de l'API
        if(is_dir(dirname(__FILE__).'/api/'.$appName) && $appName != 'Model') {
            // Test de l'existence du fichier de la classe de base de l'API
            if(file_exists(dirname(__FILE__).'/api/'.$appName.'/'.$appName.'.php')) {
                // Appel du fichier de la classe
                require_once dirname(__FILE__).'/api/'.$appName.'/'.$appName.'.php';
                // Test de la possibilité d'instancier l'API
                $reflectionClass = new ReflectionClass($appName);
                if($reflectionClass->IsInstantiable()) {
                    // Instanciation de la classe
                    $api = new $appName;
                    // Test de l'instance de l'API (doit être runnable)
                    if($api instanceof runnable) {
                        // Démarrage de l'API
                        $api->run($this);
                        // if $api->config->licence_required === true (Identification de la licence pour l'API)
                        // Définition du langage de sortie
                        $output = in_array($this->config->output, $api->config->outputs) ? $this->config->output : 'json';
                            // Affichage du résultat
                        $this->display($api->data, $output);
                    } else { $this->display(array('error' => array('id' => '0x06', 'msg' => 'API is not runnable')),$this->config->output); }
                } else { $this->display(array('error' => array('id' => '0x05', 'msg' => 'API is not recognized')),$this->config->output); }
            } else { $this->display(array('error' => array('id' => '0x04', 'msg' => 'Missing API')),$this->config->output); }
        } else { $this->display(array('error' => array('id' => '0x03', 'msg' => 'Unknown API')),$this->config->output); }
        return false;
    }
Je ne vois pas trop comment utiliser les namespace dans mon projet et surtout quelle norme adopter

Merci d'avance pour votre aide.

- Gecko