PHP:如何创建常量的“树”

时间:2019-05-22 15:23:59

标签: php abstract-class constants

我想知道在PHP中是否有可能创建常量的“树”(而不实例化类树)...让我解释一下我想做的事情(代码不正确):

abstract class logType {
   const Project = 1;
   const User = 2;
}
abstract class dbConstants {
   const logType = logType;
}

因此我在代码中使用以下内容:

dbConstants::logType::Project

2 个答案:

答案 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];

如果您不希望类继承并重用代码,则另一种方法是将traitpublic 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声明一个常量数组。

这两个都可以包含更多的数组以形成结构。