Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: Action czy Controler Główny
Forum PHP.pl > Forum > Przedszkole
Turgon
No zabrałem się do budowy szkieletu, który będę mógł potem używać w wielu aplikacjach.
Więc nieco Teori. Najpierw sobie zbudowałem strukture.
Katalog Lib - biblioteki i klasy sterujące.
Katalog Module - Moduły (łącznie z szablonami).

I teraz wymyśliłem sobie jak ładować tylko wybrane pliki, więc napisałem taką prostą klasę. I nie wiem jak to sklasifikować. Czy jako główny kontroler czy tylko jak Action?
(mówiłem, że dziwny problem) bo to zadecyduje o dalszych pracach.
  1. <?php
  2. class fileLoader
  3. {
  4. var $module;
  5. var $lib;
  6.  
  7. function getModule($module)
  8. {
  9. if(isset($module))
  10. {
  11. include_once ("module/"$module);
  12. }
  13. }
  14. function getLib($lib)
  15. {
  16. if(isset($lib))
  17. {
  18. include_once ("lib/"$lib);
  19. }
  20. }
  21. }
  22. ?>
mike
Zamykam.

Proszę przesłać mi na PW odpowiedni temat wątku oraz link do zamkniętego tematu to otworzę.

edit: otwieram
Turgon
Teraz debuger wykazuje błędy :
Cytat
Parse error: parse error, unexpected T_VARIABLE in C:\Documents and Settings\Administrator\Moje dokumenty\Projekty\Ice Island\lib\_debug_tmp.php on line 11

P.S.
Widzę, że jak przyjdzie co do czego, to na nikogo nie można liczyć...
dr_bonzo
Cytat
Widzę, że jak przyjdzie co do czego, to na nikogo nie można liczyć...

No sorry -- ale jesli nie podajesz nawet kodu, ktory ci nie dziala, to jak ktos ma ci pomoc.
Turgon
Kod jest wyżej mad.gif .
crash
  1. <?php
  2. "module/"$module
  3. ?>

Co to ma być? Może poczytaj o czymś takim jak operator łączenia ciągów?
Turgon
Eeee... Nie pamiętać smile.gif ...
A jednak znaleść biggrin.gif . Dobra teraz mam pytanie jak to zakfalifikować ? Chyba jako zwykłą klasę do Library. Zładuje się do Action gdzie będzie akcja Run, która uruchomi moduł news biggrin.gif ...
Napisałem, główną klasę odpowiadającą za akcje biggrin.gif.
  1. <?php
  2. class actionController
  3. {
  4. function run()
  5. {
  6. include ("./lib/fileLoader.class.php");
  7. include ("config.php");
  8. include ("./lib/MySQLquery.class.php")
  9. global $connect;
  10. $connect = mysql_connect($config['dbuser'],$config['dbpassword']);
  11. mysql_select_db($config['dbname']);
  12. global $mysql;
  13. $mysql = new MySQLquery;
  14. }
  15. function shutdown_MySQL()
  16. {
  17. mysql_close($connect);
  18. }
  19. }
  20. ?>


I tak się zastanawiam Czy ta klasa ma sens questionmark.gif
bela
Z tego co rozumiem to powinieneś zainteresować się wzorcem projektowym Front Controller.
Linka nie będzie, ale dobre materiały są w Blue Printach Suna i MSDN dot. ASP.NET
Turgon
Powiem szczerze, że nie za bardzo taki wzorzec mnie interesuje. Wolę zastosować nieco zmodyfikowany wzorzec MVC... I też rodzi się u mnie pytanie czy ta zmienna Globalna - obiekt będzie działać poza klasą questionmark.gif
Przybek
Zmienna globalna zupełnie zaprzecza tu MVC i hermetyzacji :] Kolega chyba nie do końca rozumie na czym ma polegać projektowanie obiektowe i radził bym tą kwestię przemyśleć. Jeżeli już chcesz robić to tak jak zaczynasz, to potrzebujesz tu klasy do obsługi bazy danych i masz dwa wyjścia - albo tworzysz jej instancję w tym Twoim kontrolerze i przekazujesz jej referencje do akcji, albo stosujesz singleton. Pytanie mam jednak jeszcze jedno, zasadnicze, kto uświadomi mnie dlaczego kontroler akcji zawiera funkcje typu shutdown_MySQL()? ;]
Turgon
Tą funkcję zrobiłem dla zabawy smile.gif, żeby kończyła mySQLa i tyle. Dla mnie to znaczy programowanie obiektowe...
Inaczej niech mnie ktoś oświeci tongue.gif
bela
Cytat(Turgon @ 2006-02-17 09:19:19)
Powiem szczerze, że nie za bardzo taki wzorzec mnie interesuje. Wolę zastosować nieco zmodyfikowany wzorzec MVC...

Eee? ;]
Wzorce projektowe nie wykluczają się winksmiley.jpg Co więcej, akurat w tym przykładzie, można doskonale je ze sobą połączyć.
Radzę poczytać najpierw, a nie od razu negetywnie podchodzić.
Turgon
Klase nieco przerobiłem (nie wiem czy się nie pomyliłem) dzięki poradom Riklaunima smile.gif . Nieco czytałem o MVC ... Nieco wyjaśnił mi ideę obiektowości smile.gif :
Ta klasa jest w sumie dosyć prosta i powiecie, że nie potrzebna, ale po prostu większość operacji chce rozbić na mniejsze kawałki, żeby ułatwić sobie w przyszłości rozbudowę i modernizację.
  1. <?php
  2. class adminController
  3. {
  4. var $module_name;
  5. var $config_name;
  6.  
  7. function adminController()
  8. {
  9. include ("./config.php");
  10. include ("./lib/actionController.class.php");
  11. include ("./lib/fileLoader.class.php");
  12. $this->services = new actionController;
  13. $this->moduleLoading = new fileLoader;
  14. }
  15. function generateModulePanel($admin_page,$module_name,$config_name)
  16. {
  17. $this->services->run();
  18. $this->moduleLoading->getModule($module_name);
  19. $this->moduleLoading->getLib($config_name);
  20.  
  21. }
  22. }
  23. ?>

Oraz druga biggrin.gif
  1. <?php
  2. class actionController
  3. {
  4. function actionController()
  5. {
  6. include ("./config.php");
  7. include ("./lib/MySQLquery.class.php")
  8. $this->mysql = new MySQLquery;
  9. }
  10. function run()
  11. {
  12. $connect = mysql_connect($config['dbuser'],$config['dbpassword']
  13. mysql_select_db($config['dbname']);
  14. }
  15. function shutdown_MySQL()
  16. {
  17. mysql_close($connect);
  18. }
  19. }
  20. ?>


Czy dobrze to napisałem ? sadsmiley02.gif
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.