Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> korzystanie z klas w klasie
SaMi
post
Post #1





Grupa: Zarejestrowani
Postów: 173
Pomógł: 14
Dołączył: 27.03.2004
Skąd: Białystok

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


Witam,
mam kilka klas każda odpowiada za inną funkcjonalność powiedzmy:

  1. Class Sql {
  2.  
  3. }
  4. Class View {
  5.  
  6. }
  7. Class Messages {
  8.  
  9. }
  10. /*Klasa bazaowa*/
  11. Classs Base {
  12.  
  13. }

W klasie Base chcę korzystać z pozostałych trzech. I teraz pytanie jak to zrobić? jedno z rozwiązań jakie przyszły mi do głowy to w konstruktorze klasy Base zainicjować je:

  1.  
  2. require_once('Sql.class.php');
  3. require_once('View.class.php');
  4. require_once('Messages.class.php');
  5.  
  6. Class Base {
  7. function __construct(){
  8. $sql=new Sql();
  9. $view=new View();
  10. $msg=new Messages();
  11. }
  12. }
  13.  


Ale może są lepsze rozwiązania. Ale jeśli mam kilka modułów i każdy z nich ma własny plik Base.class.php z klasą base bo przy każdym module każdorazowo muszę je inicjować. I nie jestem pewny czy jest to dobre rozwiązanie.

Ten post edytował SaMi 18.03.2011, 13:58:57


--------------------
Zapraszam na spływy kajakowe rzekami podlasia www.splywy-kajakiem.pl
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi (1 - 3)
Zyx
post
Post #2





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

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


Podstawy obiektówki się kłaniają. Klasa może dziedziczyć po co najwyżej jednej w klasie. Podstawy projektowania obiektowego się kłaniają. Klasa powinna być odpowiedzialna za tylko jedną rzecz, zatem próba połączenia "View", "Sql" i "Messages" w jednej klasie to głupota. Podstawy korzystania z obiektówki się kłaniają - od takich rzeczy są obiekty. Tworzysz sobie niezależnie Sql, View i Messages, a następnie wstrzykujesz je jako argumenty konstruktora.

Wreszcie, podstawy dobrego stylu się kłaniają. Korzystaj z automatycznego ładowania klas i wstawiaj modyfikatory dostępu public przed metody i pola publiczne.


--------------------
Specjalista ds. głupich i beznadziejnych, Zyx
Nowości wydawnicze: Open Power Collector 3.0.1.0 | Open Power Autoloader 3.0.3.0
Go to the top of the page
+Quote Post
kiler129
post
Post #3





Grupa: Zarejestrowani
Postów: 566
Pomógł: 35
Dołączył: 21.06.2006

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


Cytat(Zyx @ 18.03.2011, 16:12:57 ) *
Wreszcie, podstawy dobrego stylu się kłaniają. Korzystaj z automatycznego ładowania klas i wstawiaj modyfikatory dostępu public przed metody i pola publiczne.


Z ciekawości coby nie robić nowego tematu: po co stawiać public przed metodami publicznymi skoro domyślnie są publiczne oraz pisać "public $foo" a nie "var $foo"?
To jakby odwoływać się do funkcji podając wszystkie domyślne argumenty - skoro domyślnie jest public to po co to zapisywać?


--------------------
flexiCMS v2 [|||||||+--] 75% done
Go to the top of the page
+Quote Post
darko
post
Post #4





Grupa: Zarejestrowani
Postów: 2 885
Pomógł: 463
Dołączył: 3.10.2009
Skąd: Wrocław

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


Włącz raportowanie błędów na poziomie przynajmniej STRICT, a będziesz wiedział. Inną sprawą jest samo0dokumentujący się kod i lepsza dokumentacja.


--------------------
Nie pomagam na pw, tylko forum.
Go to the top of the page
+Quote Post

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

 



RSS Aktualny czas: 22.08.2025 - 01:49