Ответ 1
Значение по умолчанию общедоступно.
Метод класса может быть определен как открытый, закрытый или защищенный. Методы, объявленные без какого-либо явного ключевого слова видимости, определяются как общедоступные.
Я посмотрел manual, но я не могу найти ответ.
Какова видимость по умолчанию для PHP для методов без объявления видимости? Имеет ли PHP видимость пакета, как в Java?
Например, в следующем коде go()
открытый или закрытый?
class test {
function go() {
}
}
Причина, по которой я спросил, это то, что я видел много конструкторов, написанных как function __construct()
, а некоторые - как public function __construct()
. Являются ли они эквивалентными?
Значение по умолчанию общедоступно.
Метод класса может быть определен как открытый, закрытый или защищенный. Методы, объявленные без какого-либо явного ключевого слова видимости, определяются как общедоступные.
По умолчанию открыто. Это хорошая практика, чтобы всегда включать его, однако поддерживаемые PHP4 классы без модификаторов доступа, поэтому обычно не видно использования их в устаревшем коде.
И нет, PHP не имеет видимости пакета, главным образом потому, что до недавнего времени PHP не имел пакетов.
Значение по умолчанию является общедоступным. Причина, вероятно, заключается в обратной совместимости, поскольку старый код ожидает, что он будет общедоступным (он перестанет работать, если он не будет публичным).
По умолчанию видимость PUBLIC
function __construct()
и public function __construct()
работают как одно и то же имя метода.
Если вы не можете определить префикс для имени метода, он должен быть по умолчанию общедоступным.