[php] sens robienia pól


(pain3hp) #1

Czy jest jakiś sens robienia pól w klasach skoro jeśli i tak ich nie tworzymy to działają?


(ra-v) #2

Przeczytałem 4 razy pytanie i nie rozumiem kontekstu:)


(pain3hp) #3

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


(kostek135) #4

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.


(ra-v) #5
$punkt->x=5;

$punkt->y=5;

Tworzy obiekt i dodaje właściwość x, a nastepnie dopisuje pole y.