我想知道在PHP中是否有可能创建常量的“树”(而不实例化类树)...让我解释一下我想做的事情(代码不正确):
abstract class logType {
const Project = 1;
const User = 2;
}
abstract class dbConstants {
const logType = logType;
}
因此我在代码中使用以下内容:
dbConstants::logType::Project
答案 0 :(得分:1)
您只能使用标量数据(整数,布尔值,浮点数和字符串),在PHP> 5.6的情况下,您也可以将标量表达式,数组和资源用作常量的值,如here所述。使用数组结构,您可以执行以下操作:
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;
答案 1 :(得分:0)
在php 7中:
define('animals', [
'dog',
'cat',
'bird'
]);
这将定义一个常量数组。
在PHP 5.6中,您可以使用const
声明一个常量数组。
这两个都可以包含更多的数组以形成结构。