Question

J'apprends les espaces de noms dans PHP 5.3 et je voudrais utiliser des espaces de noms en automatique. j'ai trouvé ça Classe Spllassloader, mais je ne peux pas comprendre comment cela fonctionne.

Disons que j'ai une structure de répertoire comme ceci:

system
  - framework
    - http
      - request.php
      - response.php
index.php
SplClassLoader.php

Comment activer la classe Autoloading? Quelles espaces de noms devraient request.php et response.php ont?

C'est le request.php:

namespace framework\http;

class Request
{
    public function __construct()
    {
        echo __CLASS__ . " constructer!";
    }
} 

Et c'est le response.php:

namespace framework\http;

class Request
{            
    public function __construct()
    {      
        echo __CLASS__ . " constructed!";                
    }           
}   

Et en index.php J'ai:

require_once("SplClassLoader.php");
$loader = new SplClassLoader('framework\http', 'system/framework');
$loader->register();

$r = new Request();

J'obtiens ce message d'erreur:

Fatal error: Class 'Request' not found in C:\wamp\apache\htdocs\php_autoloading\index.php on line 8

Pourquoi cela ne fonctionne-t-il pas? Comment puis-je utiliser SplClassLoader Dans mes projets, il se charge / nécessite mes cours, et comment dois-je configurer et nom des dossiers et des espaces de noms?

Pas de solution correcte

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top