web-dev-qa-db-fra.com

PHP peuvent-ils contenir des variables?

PHP peuvent-ils contenir des variables? Si oui, comment y parvenir?

52
EmpireJones

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"
39
mario

Essaye ça

<?php
namespace App\login; 

$p = 'login';
$test2 = '\App\\'.$p.'\\MyClass';

$test = new $test2;
18
Maxim

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 );
    
11
Lorenz Lo Sauer