Olhei para o manual , mas não consigo encontrar a resposta.
Qual é a visibilidade padrão em PHP para métodos sem uma declaração de visibilidade? O PHP tem uma visibilidade de pacote como em Java?
Por exemplo, no código a seguir, é go()
público ou privado?
class test {
function go() {
}
}
A razão pela qual perguntei é que vi muitos códigos de construtores escritos como function __construct()
e alguns como public function __construct()
. Eles são equivalentes?
php
oop
visibility
Yada
fonte
fonte
O padrão é público. É uma boa prática sempre incluí-lo, no entanto, o PHP4 oferece suporte a classes sem modificadores de acesso, então é comum não ver nenhum uso deles em código legado.
E não, o PHP não tem visibilidade de pacote, principalmente porque até recentemente o PHP não tinha pacotes.
fonte
O padrão é público. O motivo provavelmente é a compatibilidade com versões anteriores, já que o código antigo espera que seja público (ele pararia de funcionar se não fosse público).
fonte
Fonte
fonte
Quando nenhuma visibilidade palavra-chave (
public
,private
ouprotected
) usados, métodos será pública . Mas você não pode definir propriedades dessa maneira. Para propriedades , você precisará anexar uma palavra-chave de visibilidade na declaração.Para propriedades que não são declaradas na classe e você atribui um valor a elas dentro de um método, elas terão visibilidade pública.
fonte
function __construct()
epublic function __construct()
funciona com o mesmo nome de método.Se você não puder definir o prefixo para um nome de método, ele deve ser público por padrão.
fonte