Существуют ли общедоступные статические переменные конечного класса
В Jave вы можете определить переменную public static final
в классе. Есть ли эквивалент этого в PHP?
Я хотел бы сделать следующее:
<?php
class MyClass{
public final static $finalVariable = "something";
}
MyClass::$finalVariable
и никогда не придется беспокоиться об изменении $finalVariable
и не иметь нового экземпляра для каждого экземпляра MyClass
Ответы
Ответ 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