【问题标题】:In PHP, what is the difference between "final static" and "const"?在 PHP 中,“final static”和“const”有什么区别?
【发布时间】:2013-10-28 16:56:41
【问题描述】:

我意识到这个问题已经在其他地方被问过不同的编程语言......但这并不是 PHP 领域中相同答案的 100% 指标,所以我问这个问题。

谁能告诉我,特别是在 PHP 中,“final static”和“const”之间的区别是什么?

【问题讨论】:

    标签: php variables static constants


    【解决方案1】:

    他们没有任何共同点,他们创造了完全不同的东西。 const 声明一个常量。 final static 声明了一个静态方法(可以在没有类实例的情况下调用)和最终方法(不能被子类覆盖)。 static 单独可以用来定义一个类范围的变量,它不是常量(但变量不能是final)。

    【讨论】:

      【解决方案2】:

      final 不适用于类属性,仅用于类和方法。这意味着该方法不能被覆盖,或者该类不能被继承。 const 是 PHP 等价于 Java 的 final 变量。

      【讨论】:

        【解决方案3】:

        final

        方法不能被子类修改。这可以防止类继承、方法覆盖和/或方法的重新定义。

        只有类中的类定义和/或方法可以定义为 final.

        static

        将类methodsproperties 声明为静态值,以便您无需实例化对象即可访问它们。这些在父类和子类之间共享。

        final不同,类定义不能是static

        const

        这些为类创建一个常量值。常量值将被更改,并且不能被父类或子类中的方法更改。

        为每个类的实例分配类常量。


        const 本身就是一个类型说明符。它不能与public/private/static 等一起使用。final,如前所述,可以与任何方法或类定义一起使用,因此;适用于所有这些。 static 不能用于类定义,但可以用于类属性。

        更新

        modifiers 自 PHP 7.1.0 起允许用于类常量。

        class Foo {
            public const bar = 5;
            private const baz = 6;
        }
        

        总而言之,final static 不能用于定义类似

        class X {
            final static x = 5;
        }
        

        这就是为什么你有一个const

        【讨论】:

        • 在 PHP 8.1 中final const 将被允许。
        猜你喜欢
        • 2015-05-11
        • 2012-12-26
        • 2011-04-09
        • 1970-01-01
        • 2012-06-28
        • 2020-01-24
        • 1970-01-01
        • 2019-02-20
        相关资源
        最近更新 更多