Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: Przekierowanie przez __call
Forum PHP.pl > Forum > PHP > Object-oriented programming
PiratNowegoPokolenia
Witam

Chciałem zrobić klasę która wykonuje jakąś tam metodę we wszystkich obiektach zapisanych tablicy
  1. <?php
  2. class a {
  3. private $aObiects;
  4. function __call( $sMethodName , $aAttribs )
  5. {
  6. foreach( $this->aObiects as $oObiect )
  7. {
  8.  $oObiekt->$sMethodName( /* Atrybuty */ ); //<=====
  9.  }
  10. }
  11. }
  12. ?>

Przykładowy obiekt zawarty w $aObiects;
  1. <?php
  2. class b{
  3. function Method( &$aaaa , &$bbbb )
  4. {
  5.  //coś tu robi
  6. }
  7. }
  8. ?>

Chciałem aby :
  1. <?php
  2. $oA = new a();
  3. $oA->Method( $aaaaa , $bbbb );
  4. ?>

Wykonywało metode `Method` dokładnie z takimi samymi atrybutami ...
Właściwie to można by przekazać argumenty w tablicy ale wolałbym zastosować takie rozwiązanie
Czy to wogóle jest możliwie ? I czy wyraziłem się jasno ? worriedsmiley.gif
PiratNowegoPokolenia
a co mam zrobić z referencją ?

  1. <?php
  2. class a {
  3.  /**
  4. ....
  5. **/
  6. public function __call( $sMethodName , $sAttribs )
  7. {
  8. foreach( $this->aExtensions as $oExtension )
  9. {
  10. call_user_func_array( array( $oExtension , $sMethodName ) , $sAttribs );
  11. }
  12. }
  13. }
  14. // Metoda wygląda tak ...
  15. public function _toString( &$sBody , &$aContent )
  16. {
  17. }
  18. // Działa .. jeśli wykonam to 
  19. $oExtensions->_toString( &$sBody , &$aContent );
  20. ?>

Ale wiadomo to generuje mi Warning
Ludvik
Na referencje chyba w danej chwili nie ma siły, poza przekazaniem podczas wykonania, które generuje warningi. Nawet znalazłem coś takiego. Opakuj to w obiekt, który automatycznie jest przekazywany poprzez referencję.
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.