У меня такой класс, как рев,
namespace DTS\eBaySDK\Constants;
class SiteIds
{
// United States
const US = 0;
// Canada (English)
const ENCA = 2;
// UK
const GB = 3;
// Australia
const AU = 15;
// Austria
const AT = 16;
// Belgium (French)
const FRBE = 23;
// France
const FR = 71;
// Germany
const DE = 77;
// Motors
const MOTORS = 100;
// Italy
const IT = 101;
// Belgium (Dutch)
const NLBE = 123;
// Netherlands
const NL = 146;
// Spain
const ES = 186;
// Switzerland
const CH = 193;
// Hong Kong
const HK = 201;
// India
const IN = 203;
// Ireland
const IE = 205;
// Malaysia
const MY = 207;
// Canada (French)
const FRCA = 210;
// Philippones
const PH = 211;
// Poland
const PL = 212;
// Singapore
const SG = 216;
}
Я могу получить доступ к этому, как показано ниже,
echo Constants\SiteIds::US;
Но когда я пытаюсь получить доступ к этому, как рев, он не работает,
$country ='US';
echo Constants\SiteIds::$country;
Есть ли способ доступа к этому?
Попробуйте с помощью этого кода:
$ref = new ReflectionClass('DTS\eBaySDK\Constants\SiteIds');
$constName = 'US';
echo $ref->getConstant($constName);
Я нашел этот ответ на: qaru.site/questions/129607/...
Чтобы получить константу, используя переменную, вы должны использовать constant
функцию. Для этой функции требуется полное имя константы, которое в вашем случае включает пространство имен:
constant("DTS\eBaySDK\Constants\SiteIds::$country")
Или из одного и того же пространства имен:
constant(__NAMESPACE__ . "\SiteIds::$country")