相关疑难解决方法(0)

接口常量的优缺点

PHP接口允许在接口中定义常量,例如

interface FooBar
{
    const FOO = 1;
    const BAR = 2;
}
echo FooBar::FOO; // 1
Run Code Online (Sandbox Code Playgroud)

任何实现类都将自动提供这些常量,例如

class MyFooBar implement FooBar
{
}
echo MyFooBar::FOO; // 1
Run Code Online (Sandbox Code Playgroud)

我对此的看法是,任何Global都是邪恶的.但我想知道接口常量是否同样适用.鉴于对接口的编码通常被认为是良好的做法,使用接口常量是在类上下文之外使用的唯一常量吗?

虽然我很想听听您的个人意见以及您是否使用界面常量,但我主要是在您的答案中寻找客观原因.我不希望这是一个民意调查问题.我对使用接口常量对可维护性有什么影响感兴趣.耦合.或单元测试.它与SOLID PHP有什么关系?它是否违反了任何被认为是PHP良好实践的编码原则?你明白了......

注意: Java有一个类似的问题列出了一些很好的理由,说明它们是Bad Practice,但由于Java不是PHP,我认为再次在PHP标记中提出它是合理的.

php interface constants

101
推荐指数
2
解决办法
3万
查看次数

在Java中,如何迭代接口的常量?

在一个接口中,我以这种方式存储常量(我想知道你对这种做法的看法).这只是一个虚拟的例子.

interface HttpConstants {
    /** 2XX: generally "OK" */
    public static final int HTTP_OK = 200;
    public static final int HTTP_CREATED = 201;
    public static final int HTTP_ACCEPTED = 202;
    public static final int HTTP_NOT_AUTHORITATIVE = 203;
    public static final int HTTP_NO_CONTENT = 204;
    public static final int HTTP_RESET = 205;
    public static final int HTTP_PARTIAL = 206;

        ...
}
Run Code Online (Sandbox Code Playgroud)

有没有办法可以迭代在这个接口中声明的所有常量?

java

13
推荐指数
2
解决办法
7133
查看次数

C#接口中不允许使用的字段

Java和C#语言有很多偏差,其中一个我观察到我们不能在接口中添加变量常量.来自Java背景,当我尝试这个时,我感到困惑,看到编译错误.

有没有人解释为什么会这样?

c# java

6
推荐指数
1
解决办法
2522
查看次数

标签 统计

java ×2

c# ×1

constants ×1

interface ×1

php ×1