Доступ к свойству статического объекта через имя переменной

Я знаю, что можно получить доступ к свойству/методу объекта, используя переменную в качестве имени

ex.:

$propName = 'something';
$something = $object->$propName;

Можно ли сделать то же самое с константами или статическими свойствами?

Я пробовал:

$constName = 'MY_CONST';

MyCLass::{$constName};

и

$obj::{$constName};

Но ничего не работает, и я не мог найти его нигде.


person CarlosCarucce    schedule 19.03.2014    source источник


Ответы (3)


Использование: Class::$$constName похоже на обычные переменные.

Демо:

<?php    
class MyClass {
    public static $var = 'A';
}
$name = 'var';
echo MyClass::$$name; // echoes 'A'

Доступ к константам можно получить с помощью функции constant:

constant('MyClass::'.$constantName)
person TimWolla    schedule 19.03.2014

Это работает для меня:

<?php
class Test {
  public static $nombre = "pepe";

  public function __construct() {
    return self;
  }
}

$varName = "nombre";
echo Test::${$varName};
person Gonzalo Bahamondez    schedule 19.03.2014

Вы можете использовать константную функцию:

constant('bar::'. $const);
constant("$obj::". $const); //note the double quote 
person David Lin    schedule 19.03.2014
comment
ваш 1-й пример сработал, но я попробовал второй способ, и он отправил ошибку: объект класса tst не может быть преобразован в строку, даже со строкой в ​​двойных кавычках. спасибо за ваш ответ в любом случае - person CarlosCarucce; 19.03.2014