Могут ли пространства имен PHP содержать переменные?

Могут ли пространства имен PHP содержать переменные? Если да, то как это можно осуществить?

  • Операторы динамического сравнения в PHP
  • PHP: лучший способ проверить, являются ли 3 переменных одинаковыми?
  • Присвоение результата функции переменной в классе PHP? Опухоль
  • Хранение данных формы как переменной сеанса
  • Как включить переменную PHP внутри инструкции вставки MySQL
  • Как объединить две строки вместе в PHP?
  • Как использовать «корневое» пространство имен php?
  • Неожиданный символ на входе: '\' (ASCII = 92) state = 1
  • Пространство имен PHP с именем динамического класса
  • PHP объединяет два имени переменной
  • Параметры загрузки JQuery () и PHP
  • В php при инициализации класса, как передать переменную этому классу, которая будет использоваться в ее функциях?
  • 5 Solutions collect form web for “Могут ли пространства имен PHP содержать переменные?”

    Нет. Вы можете установить переменную после объявления пространства имен, но переменные всегда будут существовать в глобальной области. Они никогда не привязаны к пространствам имен. Вы можете сделать вывод, что из-за отсутствия каких-либо описаний разрешения имен в

    • Часто задаваемые вопросы: что вам нужно знать о пространствах имен (PHP 5> = 5.3.0)

    Также не было бы разрешенного синтаксиса для нахождения переменных в пространстве имен.

    print \namespace\$var; // syntax error print "${namespace\\var}"; // "unexpected T_NS_SEPARATOR" 

    Попробуй это

     <?php namespace App\login; $p = 'login'; $test2 = '\App\\'.$p.'\\MyClass'; $test = new $test2; 

    Нет, они не могут, как сказал марио.

    Для инкапсуляции переменных используются классы . Следует, безусловно, избегать загрязнения глобального пространства переменных.

    • пример

      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 ); 
    • Пример использования пространств имен

      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 ); 

    Это можно сделать – вроде.

    Это, вероятно, очень плохо и никогда не должно быть сделано, но это возможно, используя переменные переменные и магическую константу для пространства имен. Итак, строковая переменная для обозначения переменной, которую мы хотим использовать, например:

     <?php namespace your\namespace; $varname = __NAMESPACE__.'\your_variablename'; //__NAMESPACE__ is a magic constant $namespaced_variable = $$varname; //Note the double dollar, a variable variable ?> 

    Я прошу не согласиться с этим руководством, МЫ МОЖЕМ .

    http://php.net/manual/en/language.namespaces.dynamic.php

     <?php namespace namespacename; class classname { function __construct() { echo __METHOD__,"\n"; } } function funcname() { echo __FUNCTION__,"\n"; } const constname = "namespaced"; /* note that if using double quotes, "\\namespacename\\classname" must be used */ $a = '\namespacename\classname'; $obj = new $a; // prints namespacename\classname::__construct $a = 'namespacename\classname'; $obj = new $a; // also prints namespacename\classname::__construct $b = 'namespacename\funcname'; $b(); // prints namespacename\funcname $b = '\namespacename\funcname'; $b(); // also prints namespacename\funcname echo constant('\namespacename\constname'), "\n"; // prints namespaced echo constant('namespacename\constname'), "\n"; // also prints namespaced 
    PHP is the Best Programming Language in the world.