2012-05-14 5 views
1

Je suis plutôt nouveau sur PHP ou pour être plus précis dans les projets qui sont au moins un peu complexes et qui ont beaucoup de classes. Jusqu'à présent, en utilisant require_once était ok. Cependant, sur un nouveau projet, il devient un peu brouillon avec des tonnes d'inclusions dont tous ne sont pas toujours nécessaires.namespaces PHP et chargement automatique

Ce que je crée est un client pour un service web public complexe (qui n'est pas sous mon contrôle). Ce client sera ensuite utilisé dans les applications.

J'ai regardé spl_autoload_register mais je n'ai pas vraiment réussi à le faire fonctionner. Le répertoire de ce projet est:

webServiceClient/src/path/same/as/namespaces 

permet de dire la classe du client qui sera directement par les applications utilisées est

webServiceClient/src/path/same 

Cette classe doit « charge » toutes les classes possibles nécessaires. Comment puis-je y parvenir?

+0

Regardez PSR-0 (https://gist.github.com/1234504) proposition. Peut-être que ça va être utile. – radmen

Répondre

1
  1. fonction Créer autoload
  2. point de registre 1 en fonction spl_autoload_register. link
  3. Si vous avez juste __autoload comme fonction de chargement automatique, vous ne devez pas l'enregistrer . link
  4. Écrivez votre fonction autoload

.

function __autoload($classname) {  
    $filename = ROOT."\\". $classname .".php"; //you can define ROOT by define('ROOT','dir path');  
    include_once($filename);  
} 

Ainsi, lorsque vous déclarez

$myclass = new webServiceClient\src\path\same; 

autolaod comprendra ROOT.'webServiceClient\src\path\same.php'

+1

'/' n'est pas un séparateur d'espace de noms. Le séparateur d'espace de nom valide est '\' et je ne suis pas sûr que votre autochargeur le gère correctement. – radmen

+0

@radmen thanx pour me rester .... +1 –