По умолчанию видимость методов класса в PHP

Я посмотрел manual, но я не могу найти ответ.

Какова видимость по умолчанию для PHP для методов без объявления видимости? Имеет ли PHP видимость пакета, как в Java?

Например, в следующем коде go() открытый или закрытый?

class test {
  function go() {
  }
}

Причина, по которой я спросил, это то, что я видел много конструкторов, написанных как function __construct(), а некоторые - как public function __construct(). Являются ли они эквивалентными?

Ответ 1

Значение по умолчанию общедоступно.

Метод класса может быть определен как открытый, закрытый или защищенный. Методы, объявленные без какого-либо явного ключевого слова видимости, определяются как общедоступные.

http://www.php.net/manual/en/language.oop5.visibility.php

Ответ 2

По умолчанию открыто. Это хорошая практика, чтобы всегда включать его, однако поддерживаемые PHP4 классы без модификаторов доступа, поэтому обычно не видно использования их в устаревшем коде.

И нет, PHP не имеет видимости пакета, главным образом потому, что до недавнего времени PHP не имел пакетов.

Ответ 3

Значение по умолчанию является общедоступным. Причина, вероятно, заключается в обратной совместимости, поскольку старый код ожидает, что он будет общедоступным (он перестанет работать, если он не будет публичным).

Ответ 4

По умолчанию видимость PUBLIC

Источник

Ответ 5

function __construct() и public function __construct() работают как одно и то же имя метода.

Если вы не можете определить префикс для имени метода, он должен быть по умолчанию общедоступным.