Zajrzałem do instrukcji , ale nie mogę znaleźć odpowiedzi.
Jaka jest domyślna widoczność w PHP dla metod bez deklaracji widoczności? Czy PHP ma widoczność pakietu jak w Javie?
Na przykład w poniższym kodzie, czy jest go()
publiczny czy prywatny?
class test {
function go() {
}
}
Powodem, dla którego zapytałem, jest to, że widziałem kod wielu konstruktorów napisany jako, function __construct()
a niektóre jako public function __construct()
. Czy są równoważne?
php
oop
visibility
Yada
źródło
źródło
Domyślnie jest publiczny. Dobrą praktyką jest zawsze dołączanie go, jednak PHP4 obsługuje klasy bez modyfikatorów dostępu, więc często nie widać ich użycia w starszym kodzie.
I nie, PHP nie ma widoczności pakietów, głównie dlatego, że do niedawna PHP nie miało żadnych pakietów.
źródło
Wartość domyślna to public. Przyczyną jest prawdopodobnie kompatybilność wsteczna, ponieważ stary kod oczekuje, że będzie publiczny (przestał działać, gdyby nie był publiczny).
źródło
Źródło
źródło
W przypadku braku widoczności kluczowe (
public
,private
lubprotected
) stosowane metody będą publiczne . Jednak w ten sposób nie można definiować właściwości. W przypadku nieruchomości konieczne będzie dołączenie słowa kluczowego widoczności w deklaracji.Właściwości, które nie są zadeklarowane w klasie i przypisujesz im wartość wewnątrz metody, będą miały publiczną widoczność.
źródło
function __construct()
ipublic function __construct()
działa z tą samą nazwą metody.Jeśli nie możesz zdefiniować przedrostka dla nazwy metody, domyślnie powinien on być public.
źródło