Я посмотрел руководство , но, похоже, не нашел ответа.
Какая видимость по умолчанию в PHP для методов без объявления видимости? Есть ли в PHP видимость пакетов, как в Java?
Например, в следующем коде это go()
публичный или частный?
class test {
function go() {
}
}
Причина, по которой я спросил, заключается в том, что я видел много кодов конструкторов, написанных как, function __construct()
а некоторые - как public function __construct()
. Они эквивалентны?
php
oop
visibility
Яда
источник
источник
По умолчанию публично. Рекомендуется всегда включать его, однако PHP4 поддерживает классы без модификаторов доступа, поэтому их использование в устаревшем коде обычно не наблюдается.
И нет, PHP не имеет видимости пакетов, главным образом потому, что до недавнего времени у PHP не было пакетов.
источник
По умолчанию - общедоступный. Вероятно, причина в обратной совместимости, поскольку старый код предполагает, что он будет общедоступным (если бы он не был общедоступным, он бы перестал работать).
источник
Источник
источник
Если ключевое слово видимости (
public
,private
илиprotected
) не используется, методы будут общедоступными . Но вы не можете определять свойства таким образом. Для свойств вам нужно будет добавить ключевое слово видимости при объявлении.Для свойств, которые не объявлены в классе, и вы присваиваете им значение внутри метода, будут видны общедоступные.
источник
function __construct()
иpublic function __construct()
работает с тем же именем метода.Если вы не смогли определить префикс для имени метода, он должен быть по умолчанию общедоступным.
источник