Les espaces de noms PHP peuvent-ils contenir des variables? Si oui, comment cela peut-il être accompli?
Réponses
Trop de publicités?Non. Vous pouvez définir une variable après avoir déclaré un espace de noms, mais les variables existeront toujours dans la portée globale. Ils ne sont jamais liés aux espaces de noms. Vous pouvez déduire cela de l'absence de toute description de résolution de nom dans
- FAQ: ce que vous devez savoir sur les espaces de noms (PHP 5> = 5.3.0)
Il n'y aurait pas non plus de syntaxe autorisée pour localiser les variables dans un espace de noms.
print \namespace\$var; // syntax error
print "${namespace\\var}"; // "unexpected T_NS_SEPARATOR"
Non ils ne peuvent pas, en tant que mario a dit.
Pour encapsuler les variables d'utiliser les Classes. Pollution de la variable globale de l'espace devrait certainement être évitée.
-
Exemple
class_dbworker.php:
class DbWorker { //properties and method logic } class DbWorkerData { public static $hugerelationsmap = array(....); public static .... }
mainapp.php:
include_once 'class_dbworker.php'; print_r( DbWorkerData::$hugerelationsmap );
-
Exemple d'utilisation des espaces de noms
class_dbworker.php:
namespace staticdata; class DbWorker { //properties and method logic } class DbWorkerData { public static $hugerelationsmap = array(....); public static .... }
mainapp.php:
include_once 'class_dbworker.php'; use staticdata as data; print_r( \data\DbWorkerData::$hugerelationsmap );