Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> Implementacja klas, Czy potrzebna?
kezard
post
Post #1





Grupa: Zarejestrowani
Postów: 12
Pomógł: 0
Dołączył: 19.01.2010

Ostrzeżenie: (0%)
-----


Witam!

Załóżmy że mamy przykladowa funkcje doSomething() :

  1. function doSomething($obj)
  2. {
  3. $obj->imie = 'Adam';
  4. $obj->nazw = 'Kowalski';
  5.  
  6. return $obj;
  7. }
  8.  
  9. doSomething($test);
  10. echo $test->imie.' '.$test->nazw;


Ten kod oczywiscie zadziała, jednak pytanie brzmi czy warto implementowac klase dla obiektow wykorzystanych w przykladzie. Czy jest sens, nawet jesli zwracaja wiekszoa ilosc danych niz tylko imie i nazwisko? Czy warto tworzyc dodatkowy kod aby byc OOP czy nie marnowac czasu"skoro dziala" ? Jakie sa roznice techniczne?

Dla porownania :
  1. class Test
  2. {
  3. public $imie;
  4. public $nazw;
  5. }
  6.  
  7. function doSomething($obj)
  8. {
  9. $obj->imie = 'Adam';
  10. $obj->nazw = 'Kowalski';
  11.  
  12. return $obj;
  13. }
  14.  
  15. $test = new Test;
  16. doSomething($test);
  17. echo $test->imie.' '.$test->nazw
  18. ?>


Dodam że wykorzystuje to przy przekazywaniu danych do widokow (MVC). Czy warto tworzyc implementacje?

pozdrawiam.

Ten post edytował kezard 20.09.2010, 08:29:50
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi
Zyx
post
Post #2





Grupa: Zarejestrowani
Postów: 952
Pomógł: 154
Dołączył: 20.01.2007
Skąd: /dev/oracle

Ostrzeżenie: (0%)
-----


Hermetyzacja to ukrycie wewnętrznej struktury klasy za interfejsem złożonym z metod, które mają kontrolować zmianę stanu każdego obiektu. Ponadto gdzie ja napisałem, by automatycznie dawać do wszystkiego? Dajesz tam, gdzie to jest potrzebne, implementujesz to tak, jak jest potrzebne, a getter/setter nawet nie musi mieć mapowania na pojedyncze pole. A że zazwyczaj ma? Nie zmienia to faktu, że to jest hermetyzacja, jako że ukryłeś wewnętrzną strukturę. Użytkownik nie musi wiedzieć, że to jest mapowane na pole prywatne/chronione.
Go to the top of the page
+Quote Post

Posty w temacie


Reply to this topicStart new topic
2 Użytkowników czyta ten temat (2 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Aktualny czas: 5.10.2025 - 10:03