Вы можете использовать только скалярные данные (целочисленные, логические, с плавающей точкой и строки), при PHP> 5,6 вы также можете использовать скалярные выражения, массивы и ресурсы в качестве значения константы, как описано здесь . Со структурой массива вы можете сделать что-то вроде этого:
abstract class logType
{
const PROJECT = 1;
const USER = 2;
}
abstract class dbConstants
{
const logType = [
logType::PROJECT,
logType::USER
];
}
echo dbConstants::logType[logType::PROJECT];
Другой подход заключается в использовании trait
с public static
членами, подобными этому, если вы не хотите наследовать классы и повторно использовать свой код:
trait logType
{
public static $PROJECT = 1;
public static $USER = 2;
}
abstract class dbConstants
{
use logType;
}
echo dbConstants::$PROJECT;
Другой способ без использования массива:
class logType
{
const PROJECT = 1;
const USER = 2;
}
abstract class dbConstants
{
public static $logType;
public function __construct()
{
$this->logType = new logType();
}
}
echo dbConstants::$logType::PROJECT;