Как я могу получить доступ к константам класса внутри функции, которая определена внутри этого класса?
class Test{
const STATUS_ENABLED = 'Enabled';
const STATUS_DISABLED = 'Disabled';
public function someMethod(){
//how can I access ALL the constants here let's say in a form of array
}
}
Я имею в виду не доступ к каждой константе, а доступ ко ВСЕМ константам в виде массива. Я видел что-то вроде:
<?php
class Profile {
const LABEL_FIRST_NAME = "First Name";
const LABEL_LAST_NAME = "Last Name";
const LABEL_COMPANY_NAME = "Company";
}$refl = new ReflectionClass('Profile');
print_r($refl->getConstants());
Но что, если я хочу получить доступ ко ВСЕМУ списку констант внутри этого класса?
Чтобы получить список всех определенных констант для класса, вам нужно использовать Reflection:
ReflectionClass объект имеет getConstants () метод
Если вы хотите собрать все константы в виде массива, вы мог использование отражение:
$reflection = new ReflectionClass("classNameGoesHere");
$reflection->getConstants();
Однако это будет очень медленно и в основном бессмысленно. Что было бы гораздо лучшей идеей, это просто объявить все константы в другом массиве, который вы затем используете:
class Test{
const STATUS_ENABLED = 'Enabled';
const STATUS_DISABLED = 'Disabled';
$states = array(
self::STATUS_ENABLED,
self::STATUS_DISABLED,
}
Это дает дополнительное преимущество: он будет продолжать работать, если вы добавите больше констант. Нет никаких оснований предполагать, что все константы класса связаны каким-либо образом, если только вы явно не сделаете это, определив отношение как массив.