Видимость констант объекта - PullRequest
5 голосов
/ 18 августа 2010

Я обнаружил, что константы объектов в PHP всегда имеют публичную видимость, поэтому невозможно установить их как защищенные или приватные, как это:

<?php
class MyClass {
    protected const constant = "this won't work";
}
?>

Какое это объяснение? Я не могу придумать вескую причину заставить константы быть публичными.

Ответы [ 2 ]

4 голосов
/ 18 августа 2010

Это довольно философский вопрос, который обсуждается в комментариях для констант класса в руководстве по PHP .Кажется, что аргумент состоит в том, что Visibility определяет, кто имеет право менять участников, а не кто имеет право читать их .Поскольку константы не могут быть изменены, нет смысла заставлять их поддерживать видимость, когда видимость понимается как модификаторы доступа.Если вы придерживаетесь этой аргументации или используете , запрос связанной функции под вашим вопросом остается за вами.

1 голос
/ 18 августа 2010

Я не могу придумать вескую причину для того, чтобы заставить константы быть публичными.

Ну, константы - это статические определения, привязанные к классу и не созданные объекты Они могут быть адресованы только с помощью classname::constname, и их нельзя изменить. Разумеется, они являются частью плана класса, и поэтому нет смысла применять к ним правила видимости.

Это только мое довольно субъективное мнение, хотя. Интересно посмотреть, подходит ли что-нибудь, основанное на теории жестких ООП.

...