Доступ к константам собственного класса

Как я могу получить доступ к константам класса внутри функции, которая определена внутри этого класса?

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

Но что, если я хочу получить доступ ко ВСЕМУ списку констант внутри этого класса?

0

Решение

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

ReflectionClass объект имеет getConstants () метод

1

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

Если вы хотите собрать все константы в виде массива, вы мог использование отражение:

$reflection = new ReflectionClass("classNameGoesHere");
$reflection->getConstants();

Однако это будет очень медленно и в основном бессмысленно. Что было бы гораздо лучшей идеей, это просто объявить все константы в другом массиве, который вы затем используете:

class Test{

const STATUS_ENABLED = 'Enabled';
const STATUS_DISABLED = 'Disabled';

$states = array(
self::STATUS_ENABLED,
self::STATUS_DISABLED,

}

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

1

По вопросам рекламы [email protected]