PHP特征 – 定义通用常量

定义名称空间中许多类可能使用的常量的最佳方法是什么?我试图避免过多的继承,因此扩展基类并不是一个理想的解决方案,而且我很难找到一个使用特征的好解决方案.这在PHP 5.4中是否可能以任何方式实现,还是应采取不同的方法?

我有以下情况:

trait Base
{
    // Generic functions
}

class A 
{
    use Base;
}

class B 
{
    use Base;
}

问题是无法在PHP特征中定义常量.理想情况下,我想要以下内容:

trait Base
{
    const SOME_CONST = 'someconst';
    const SOME_OTHER_CONST = 'someotherconst';

    // Generic functions
}

然后可以通过应用特征的类访问这些:

echo A::SOME_CONST;
echo B::SOME_OTHER_CONST;

但由于性状的限制,这是不可能的.有任何想法吗?

解决方法:

我最终使用了user sectus’s suggestion个接口,因为它感觉就像处理这个问题最不成问题的方式.使用一个接口来存储常量而不是API契约有一个难闻的气味,尽管如此可能这个问题更多的是关于OO设计而不是特征实现.

interface Definition
{
    const SOME_CONST = 'someconst';
    const SOME_OTHER_CONST = 'someotherconst';
}

trait Base
{
    // Generic functions
}

class A implements Definition
{
    use Base;
}

class B implements Definition
{
    use Base;
}

这允许:

A::SOME_CONST;
B::SOME_CONST;
上一篇:【STM32】时钟


下一篇:找出C对象是否可调用