Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: Hooks?
Forum PHP.pl > Forum > PHP > Object-oriented programming
bim2
Mam mały problem. smile.gif Powiedzmy, że mam akcję Users do tego model i widok. Działa to sobie normalnie.

Ale dokładam akcję Players i chce, żeby dla każdego usera w bazie w osobnej tabeli dodał się nowy wiersz . Dla przykładu:
  1. <?php
  2. class Action_User {
  3.  public function register()
  4.  {
  5.    $this->oDb->Insert('users', array('name' => $this->postString('name'), 'password' => md5($this->postString('password'))));
  6.    // i w tym momencie chciałbym dodać jeszcze jeden wiersz do kolumny. Bawiłem się w normalne dopisywanie, ale czasami nie jest to za wygodne. Zwłaszcza jak wrzucam poprawki z innych aplikacji.
  7.    $this->oDb->Insert('players' ... );
  8.  
  9.  }
  10. }
  11. ?>

Pomyślałem że może by zrobić haki.
  1. <?php
  2. $this->oDb->Inser(...);
  3. $this->hookAdd('User', 'afterRegister');
  4. ?>

i później jakiś Settings/hooks.php
  1. <?php
  2. $oHook = $oController->getHookObject();
  3. $oHook->event('User', 'afterRegister')->execute('Players', 'addRowsForUserAction');
  4. ?>


Oczywiście byłby automatyczny hook przed wywołaniem akcji i po wywołaniu.

Tylko, może ktoś ma lepszy pomysł? smile.gif Jestem otwarty na propozycje ;]
dr_bonzo
OOP??

Ja mam ActiveRecord.
Klasa user, po zapisie wywoluje na obiekcie usera automatycznie afterInsert() w ktorej to metodzie moge utworzyc rekord Playera itd.
bim2
No własnie tego chce uniknąć, żeby w pliku gdzie leżą akcje należące do usera trzymać afterRegister(); Jak pisałem mam kilka aplikacji działających na tym samym frameworku i zdarza się, że dodam coś lub znajdę błąd i chciałbym to szybko wgrać do iluśtam aplikacji. Tylko, że w niektórych mam pododawane metody i wtedy musze otwierać plik i zmieniać. ;/ Dlatego się zastanawiam nad jakimś rozwiązaniem.

Cytat
OOP??

Mówisz o dziale?
dr_bonzo
Mowie o twoim kodzie. Ale nvm, takie czepianie sie.

Hmm, zrob klase bazowa UserBase - ktora wszedzie bedzie identyczna, a w kazdej aplikacji dodasz swoja klase
User extends UserBase ktora moze miec customowe afterInsert() itp.
bim2
Oo, jakoś mi umknęło dziedziczenie. Tylko, że wtedy troche bym musiał system przebudować. Ale i tak koncepcja warta rozważenia winksmiley.jpg
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.