Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: Przekazywanie zmiennych pomiędzy klasami rodzica i dziedzica ;-)
Forum PHP.pl > Forum > PHP > Object-oriented programming
br-design.pl
Mam pewien problem.

Otóż mam klasę, po której dziedziczą inne klasy, w tej klasie mam funkcje add, która dodaje rekord do bazy.
Oprocz tego mam metody beforeAdd i afterAdd, tak aby mozna bylo w klasie dziedziczacej wplywac na klase add bez jej nadpisywania.

  1. <?php
  2. class ApplicationController {
  3. public function add() {
  4. $record = ... pobieram obiekt ActiveRecord.
  5.  
  6. beforeAdd($record);
  7. ... tutaj dodawanie do rekordu...
  8.  if($rekord->save()) {
  9.  afterAdd($record);
  10.  }
  11.  
  12. beforeAdd($record) {
  13.  
  14. }
  15.  
  16. afterAdd($record) {
  17.  
  18. }
  19. }
  20. ?>

Teraz w klasie dziedziacej chcialbym moc korzystac z tego parametru record ktory jest jest przekazywany do tych funkcji after i before.

np.
  1. <?php
  2. class news extends ApplicationController {
  3. afterAdd() {
  4. $record->status = 'dodany';
  5.  }
  6. }
  7. ?>


Chodzi o to w jakis sposob moge korzystac z parametrow przekazywanych do funkcji rodzica w klasie ktora dziedziczy. Ktos moze pomoc?
dr_bonzo
  1. <?php
  2. abstract class AppController // chociaz nienajlepsza nazwa dla tej klasy
  3. {
  4. public function add( $record )
  5. {
  6.  
  7. beforeAdd( $record );
  8. // tutaj dodajesz rekord
  9. afterAdd( $record );
  10. }
  11.  
  12. abstract public function beforeAdd( $record );
  13. abstract public function afterAdd( $record );
  14. }
  15.  
  16. class JakisAppController extends AppController
  17. {
  18. public function beforeAdd( $record )
  19. {
  20.  ....// i to zostanie wywolane
  21. }
  22.  
  23. public function afterAdd( $record )
  24. {
  25.  ....// i to zostanie wywolane
  26. }
  27.  
  28. }
  29.  
  30. ?>

Wzorzec Template Method
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.