Czy jest jakiś sens robienia pól w klasach skoro jeśli i tak ich nie tworzymy to działają?
Przeczytałem 4 razy pytanie i nie rozumiem kontekstu:)
ani nie tworząc klasy ani jej pól można korzystać $zmienna->pole, więc czy jest sens robić w klasie pola oczywiście poza tymi potrzebnymi do metod
– Dodane 27.11.2010 (So) 9:57 –
znalazłem fajnego posta:
class wspolrzedne
{
public $x;
public $y;
}
$punkt= new wspolrzedne;
$punkt->x=5;
$punkt->y=5;
wtedy $punkt nalezy do klasy wspolrzedne gdy nie zrobimy $punkt operatorem new to wtedy możemy wykonywać takie instrukcje
$punkt->x=5;
$punkt->y=5;
a $punkt należy do stdClass, a co w przypadku gdy operatorem new tworzymy $punkt ale nie tworzymy mu pól $x i $y (mu to znaczy klasie), a wykonamy instrukcje to i tak działają
$punkt->x=5;
$punkt->y=5;
tego nie rozumiem
Teoretycznie w tym przypadku nie ma, ale co jeśli chcesz hermetyzować pola klasy poprzez private ( co imho powinno się robić, a dostęp mieć tylko i wyłącznie poprzez zdefiniowane metody), albo chcesz zrobić pole statyczne dla całej klasy wtedy musisz już definiować z innymi słowami kluczowymi, bo PHP zapewne jak napotka pole klasy, które nie istnieje (nie jest zdefiniowane), to żeby uniknąć błędu (nad czym boleje) uznaje, że aha to w takim razie musi być pole domyślne (public) i samo na etapie parsowania je do definiuje. Potem jak masz część pól private, cześć static - a w programie pojawiają się jeszcze nie zdefiniowane pola, to robi się bajzel. Taki język i tyle robi dużo rzeczy z programistę, a potem jak trzeba w c/c++ pisać to są dziwoty, że kompilator sypie błędami.
$punkt->x=5;
$punkt->y=5;
Tworzy obiekt i dodaje właściwość x, a nastepnie dopisuje pole y.