Подтвердить что ты не робот

Существуют ли общедоступные статические переменные конечного класса

В Jave вы можете определить переменную public static final в классе. Есть ли эквивалент этого в PHP?

Я хотел бы сделать следующее:

<?php

class MyClass{

    public final static $finalVariable = "something";
}

MyClass::$finalVariable

и никогда не придется беспокоиться об изменении $finalVariable и не иметь нового экземпляра для каждого экземпляра MyClass

4b9b3361

Ответ 1

От эта страница в руководстве по PHP:

Примечание. Свойства не могут быть объявлены окончательными, только классы и методы могут быть объявлены окончательными.

Однако вы можете использовать константы класса, как описано здесь.

Ваш пример будет выглядеть примерно так:

<?php

class MyClass{
    const finalVariable = "something";
}

MyClass::finalVariable;
?>

За исключением, конечно, что finalVariable на самом деле не является подходящим именем, потому что это не переменная =).

Ответ 2

В PHP OOP нет таких элементов, как final или readonly ключевые слова/понятия для переменных-членов. final сам доступен для самих классов и функций, содержащихся только внутри.

Вместо этого следует использовать константу класса, это гарантирует, что значение не может измениться.

class MyClass
{
    const FINALVARIABLE = "something";
}

// Usage
MyClass::FINALVARIABLE