Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> klasy i dziedziczenie
yeti
post
Post #1





Grupa: Zarejestrowani
Postów: 52
Pomógł: 0
Dołączył: 12.09.2003

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


Witam, mam kłopot myślowy co do zagospodarowywania zasobów podczas tworzenia obiektów.

Wprowadzenie:
mamy serwis, w którym wykorzystywane są:
- 3 klasy podstawowe (połączenie z DB, obsługa zapytań, klasa serwisowa). Klasy te dzidziczą od siebie w podanej kolejności
- 1 klasa do obsługi prezentacji
- 2 klasy specjalizowane (obsługjące konkretne działy serwisu, np. newsy i forum)

Pytanie:
Czy sensowne jest rozwiązanie, w którym robimy dwie ścieżki dziedziczenia: od klasy News poprzez Prezentację i klasy podstawowe i od klasy Forum poprzez Prezentację i klasy podstawowe? Klasy News i Forum używane są rownocześnie tylko 2 razy, ale spowoduje to niepotrzebne dwukrotne wywołanie klasy Prezentacji i klas podstawowych.

Czy może jest sensowniejsze rozwiązanie?
Dodam, że funkcjonalność klas News i Forum zasadza się na użyciu metod z klas podstawowych.
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi
yeti
post
Post #2





Grupa: Zarejestrowani
Postów: 52
Pomógł: 0
Dołączył: 12.09.2003

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


Cytat(bregovic @ 2004-09-22 21:35:21)
w jakim sensie niebezpieczne? chodzi ci o powtarzanie sie nazw zmiennych, czy o cos innego?

Chodzi mi o to, że w pewnym sensie tracisz kontrolę nad zmienna. Wolę wiedzieć gdzie zmienna się kończy, a gdzie zaczyna. Korzystam z tablic globalnych i to mi wystarcza. A poza tym, jak to napisano powyżej, to nie jest zbyt eleganckie (IMG:http://forum.php.pl/style_emoticons/default/smile.gif)

A oto i rozwiązanie problemu:

  1. <?php
  2.  
  3.  class Db {
  4.  
  5. function dbTest(){
  6.  echo('class Db, function testDb<br />');
  7. }
  8.  
  9.  }
  10.  
  11.  
  12.  class Sql {
  13.  
  14. var $db = NULL;
  15.  
  16. function sqlTest(){
  17.  echo('class Sql, function sqlTest<br />');
  18. }
  19.  
  20. function sqlDbTest(){
  21.  echo('class Sql, function sqlDbTest<br />');
  22.  $this -> db -> dbTest();
  23. }
  24.  
  25. function Sql(&$db){
  26.  $this -> db = &$db;
  27. }
  28.  }
  29.  
  30.  $db = new Db();
  31.  $db -> dbTest();
  32.  
  33.  $sql = new Sql($db);
  34.  $sql -> sqlTest();
  35.  $sql -> sqlDbTest();
  36. ?>


Ten post edytował yeti 24.09.2004, 20:34:36
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: 26.12.2025 - 15:33