2011-01-13 14 views
9

Dlaczego powinienem zadeklarować właściwości (zmienne) klas lub metody (funkcje) używając słowa kluczowego public, jeśli są one domyślnie publiczne? Albo czy oni?Klasy PHP, dlaczego warto używać słowa kluczowego publicznego?

Aby sformułować moje pytanie inaczej, czy public jest zbędny? Rozumiem, private i protected, ale dlaczego zadeklarować public, czy członkowie klasy są publiczne mimo to?

Odpowiedz

7

Tak, public jest domyślny (patrz visibility docs).

Ludzie dodają go, więc jest zgodny z wszystkimi innymi metodami/właściwościami.

Ponadto, jeśli chcesz zadeklarować właściwość publiczną i nie chcesz używać public, musisz użyć var, co nie jest zalecane i prawdopodobnie zostanie wycofane w pewnym momencie.

+0

Dla właściwości, ok. Ale kto tak naprawdę potrzebuje publicznych nieruchomości w dzisiejszych czasach? W przypadku metod publicznych jest to kwestia konwencji (np. PSR-2), która sprzyja poznaniu i interoperacyjności. Ale nie ma żadnej technicznej korzyści. I, twierdzę, nie poprawia to czytelności, jeśli twój mózg nie jest już przyzwyczajony do wyświetlania publicznego słowa kluczowego. – donquixote

2

Oczywiście jest zbędny, ponieważ jest to domyślny poziom widoczności. Powinieneś ich unikać, kiedy możesz. Niektóre osoby dodają jednoznacznie słowo public, dzięki czemu kod jest trochę czytelniejszy.

+1

uniknąć tego, co (kto) kiedy mogę? – Ben

+1

@Steve: Mam na myśli to, że możesz zignorować wpisywanie słowa kluczowego 'public' dla publicznych użytkowników vars :) – Sarfraz

+1

@Stv Słowo kluczowe' public '. – Savetheinternet

3

Począwszy od wersji 5.3 (wydaje mi się, że minęło trochę czasu), użycie słowa kluczowego var powoduje błędy E_STRICT, więc do zadeklarowania wartości obiektu należy użyć parametru public. Jeśli chodzi o funkcje, to uważam, że jest to bardziej konsekwencja.

+0

Nie, podniósł E_STRICT między 5.0 a 5.13 (zgodnie z dokumentem). Ale zrzekli się powiadomienia. – NikiC

+0

Och, naprawdę? Dzięki za heads up. Nigdy nie zdawałem sobie sprawy, że to się zmieniło – Travis

Powiązane problemy