Uchwycić moment…

menic’s devBlog

Wiele akcji w jednej akcji - sukces!

W poprzedniej notce pisałem o moich dylematach co do ładowania akcji w akcji. Teraz, po długich bojach doszedłem do tego co chciałem :D Przyklad:

PHP:
  1. <?php
  2. class DefaultAction extends View
  3. {
  4. public function Index()
  5. {
  6. $this->newModel( 'Show');          //Załaduje nam akcje Show z aktualnego modulu
  7. $this->newModel( 'Show', 'News' ); //Załaduje Show z modułu News
  8. $this->newModel( 'Index', 'Test'); //Załaduje Index z modułu Test
  9. }
  10. public function Show()
  11. {
  12. $this->test = 'zmienna testowa';
  13. }
  14. }
  15. ?>

To był przyklad wykorzystania. To jest dokladnie to o co mi chodziło od początku :) Teraz bez problemu moge napisać moduł News oraz moduł Comments, bez zadnych powiązań między nimi. Zaden z modułów nic nie musi wiedzieć o drugim. Do zrobienia jeszcze zostało mi tylko dodanie parametrów, do nowo wywołanej akcji, ale to już nie problem :)
Dodatkowo, aby sie nie pomylić w szablonach ze zmiennymi, zrobiłem małe udogodnienie. Do zmiennych w szablonie odwołujemy sie w taki sposób: echo $NazwaModułu->zmienna Dzięki temu napewno nie nastapi pomyłka, lub nadpisanie jakiejs zmiennej :)

5 Comments so far

  1. php blog styczeń 14th, 2007 5:32 pm

    Napisz potem jak to w praktyce wyszło, czy się sprawdziło, gdy skończysz jakiś projekt.

  2. sopel styczeń 14th, 2007 6:08 pm

    przez jakiś czas głowiłem się z podobnym dylematem, w końcu stworzyłem coś co używa wzorca kompozycji do składania akcji razem + małe udogodnienia, z tym że każda akcja jest tworem całkowicie niezależnym z własnym indywidualnym szablonem. w chwili wolnego czasu muszę to jakoś ładnie udokumentować i udostępnić. mam nadzieję, że ty też pokażesz trochę kodu od podszewki niedługo.

  3. menic styczeń 14th, 2007 10:46 pm

    U mnie każda akcja równiez jest samodzielna. Można je wywoływać bespośrednio lub pośrednio wewnątrz innej akcji. Oraz oczywiście każda posiada osobny szablon. Co do udostepnienia kodu... Jeszcze nie wiem. Docelowo pisze to sam dla siebie, aby pózniej wykorzystywać w przyszłych projektach. Ale być może dam do oceny :)

  4. M. styczeń 18th, 2007 10:59 am

    Przecież nie ładujesz module, a model - reprezentację danych. I czemu nazywasz to akcjami? Widoczny brak teorii... Poza tym jeżeli to jest kontroler akcji to dlaczego dziedziczy po klasie widoku? Jakoś całość nie ma sensu.

  5. menic styczeń 18th, 2007 11:23 am

    Nazywać moge jak chce. Jak nie wiesz jak jest zbudowana całość, to nie pisz, ze nie ma sensu. Klasa View dziedziczy po AppController. Już ma sens? Czemu nazywam akcjami? Jak zapoznasz sie ze specyfikacją Symfony, to sie dowiesz dlaczego (link).  Takie podzielenie jakie jest zastosowane odpowiada mi w 200%.

Leave a reply

Mexico