Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [PHP] Sposób znakowanie metody prywatnej
Forum PHP.pl > Forum > Przedszkole
lukasamd
Witam,
powoli staram się używać OOP i dziś trafiłem na coś, o czym nigdzie nie czytałem.

Wszędzie piszą, znakuj metodę prywatną klasy tak:
Kod
private function nazwa_funkcji(DALSZY KOD


w przeglądanym pliku znalazlem coś takiego:

Kod
function _nazwa_funkcji(DALSZY KOD


a następnie w dokumentacji dowiedziałem się, że ma to dostęp prywatny...

Czy jest to zamienny sposób oznaczania, czy jeszcze coś innego?
Jeżeli to pierwsze, to co lepiej stosować? Wydaje mi się że pierwszy wariant jest najbardziej czytelny, ale nie wiem jak się przyjęło.
Fifi209
Według mojej wiedzy ten drugi nijak nie może być prywatnym, chyba że się mylę i ktoś mnie naprowadzi na dobry tok myślenia.
nospor
dla oznaczenia metody prywatnej uzywa sie slowa "private".

uzywanie podkreslenia jest tylko i wyłącznie jednym z przyjętych nazewnictw zmiennych/funkcji, mowiących, zeby podkresleniem rozpoczynac zmienne prywatne.
Inne nazewnictwa mówią, ze zmiennna prywatna to zmienna pisana z małej litery. zmienna pisana z duzej litery to zmienna publiczna.

taki wiec kod:
function _nazwa_funkcji
dla php to nic innego jak funkcja publiczna. Dla notacji - prywatna
taki zas :
private function _nazwa_funkcji
dla php to funkcja prywatna. Dla notacji też prywatna.

No ale ważniejsze jest to co dla php winksmiley.jpg Notację/nazewnictwo należy stosować tylko dla przejrzystości dla człowieka
lukasamd
Aha, no to dzięki winksmiley.jpg
Nie wiem po co stosować to "_" dla notacji, skoro nieco wcześniej stoi jak wół (no bo musi stać): "private"... smile.gif
nospor
ale jak gdzieś później w kodzie masz:
...
$this->_nazwa_funkcji();
...
to juz po samej nazwie wiesz, że to prywatna - nie musisz leciec do jej definicji
lukasamd
Niby tak, tylko że w tym kodzie nie odwołują się do tych funkcji w ten sposób, czyli jest coś takiego:

Opis metody:
Kod
function _nazwa_funkcji(DALSZY KOD


Jej użycie w dalszej części klasy:
Kod
$this->nazwa_funkcji();
scanner
Na pewno nie masz tam dwu metod - jednej z podkreśleniem i drugiej bez?
lukasamd
Na pewno.
Zresztą sprawdź sam - moduł obsługi mysqli w phpbb3.
Fifi209
Cytat(lukasamd @ 26.10.2009, 08:53:38 ) *
Na pewno.
Zresztą sprawdź sam - moduł obsługi mysqli w phpbb3.


Niemożliwe, może klasa w której to zobaczyłeś dziedziczy tą funkcję z innej klasy?

czarne jest czarne a białe jest białe i nikt mi nie wmówi, że jest inaczej.
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.