Динамический доступ к классу констант в переполнении стека

Я хочу иметь возможность динамически искать значение константы, но использование переменной не работает с синтаксисом.

<?php
class Food {
const FRUITS = 'apple, banana, orange';
const VEGETABLES = 'spinach, carrot, celery';
}

$type = 'FRUITS';

echo Food::FRUITS;
echo Food::$type;

?>

дает

apple, banana, orange

Fatal error: Access to undeclared static property: Food::$type

Как я могу динамически называть константу?

0

Решение

Единственное решение, которое приходит мне в голову, это использование constant функция:

echo constant('Food::' . $type);

Здесь вы создаете имя константы, включая класс, в виде строки и передаете эту строку ('Food::FRUITS') чтобы constant функция.

2

Другие решения

ReflectionClass может использоваться для получения массива всех констант, а затем значение конкретной константы можно найти оттуда:

<?php
class Food {
const FRUITS = 'apple, banana, orange';
const VEGETABLES = 'spinach, carrot, celery';
}

$type = 'FRUITS';

$refClass = new ReflectionClass('Food');
$constants = $refClass->getConstants();

echo $constants[$type];

?>
1

По вопросам рекламы ammmcru@yandex.ru
Adblock
detector