Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: Pare klas w jednej ?
Forum PHP.pl > Forum > PHP > Object-oriented programming
Damiankossek
Witam,
Da radę w PHP zrobić tak aby np. jedna klasa `dziedziczyła` parę klas ?

Bo mam np. klasę "articles" która dziedziczy po "mainClass"

No i w tej mainClass ustawiam wszystkie główne rzeczy dotyczące strony (Autoryzacje , itp.) i np. fajnie byłoby jak bym mógł pod mainClassa doczepić jakąś dodatkową klasę np. `bbCode` , `advertisements` itp.

Na siłę mógłbym napisać w mainClassie funkcje odpowiadające za bbCode, reklamy. Ale wole jednak mieć to jakoś posegregowane na plikach.

Niestety kilka klas naraz nie da się dziedziczyć ale może macie jakieś domowe metody snitch.gif ?
CuteOne
Najgłupszym sposobem było by dziedziczenie:
a->b->c->d i tak dalej ;]

Do tego co piszesz wystarczy instancja "doczepianej" klasy:

  1. <?php
  2.  
  3. class A {
  4. static private $instance = null;
  5.  
  6. static public function getInstance() {
  7.  
  8. if (self::$instance == null) {
  9.  
  10. $c = __CLASS__;
  11. self::$instance = new $c();
  12. }
  13.  
  14. return self::$instance;
  15. }
  16.  
  17. public function echoMe() {
  18. echo "aaaa";
  19. }
  20. }
  21.  
  22. class B {
  23.  
  24. public $klasa_A;
  25.  
  26. public function setInstanceA() {
  27. $this->klasa_A = A::getInstance();
  28.  
  29. }
  30. }
  31.  
  32. class C extends B {
  33.  
  34. public function getMe() {
  35.  
  36. $this->setInstanceA();
  37.  
  38. $this->klasa_A->echoMe();
  39. }
  40. }
  41.  
  42. $f = new C;
  43. $f->getMe();
Crozin
@Damiankossek: W jaki niby sposób artykuł jest wyspecjalizowaną formą BBCode albo autoryzacji? W żaden, więc z dziedziczenie nie powinieneś tutaj w ogóle korzystać.

Chcesz, aby artykuł miał dostęp do jakiś tam metod obiektu odpowiedzialnego za przetwarzanie BBCode - przekaż mu go (DI).
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.