PHP peuvent-ils contenir des variables? Si oui, comment y parvenir?
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
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"
Essaye ça
<?php
namespace App\login;
$p = 'login';
$test2 = '\App\\'.$p.'\\MyClass';
$test = new $test2;
Non ils ne peuvent pas, comme l'a dit mario.
Pour encapsuler des variables, utilisez Classes . Il faut absolument éviter de polluer l'espace variable global.
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 d'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 );