Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [MVC] Controler w praktyce
Forum PHP.pl > Forum > PHP > Object-oriented programming
KotWButach
Witam chcialbym was prosić o szybką ocenę mojego kodu. Co przenieść do modelu jeżeli coś jest do przeniesienia a może któreś rozwiązania są do dupy...

  1. <?php
  2.  
  3. /**
  4.  * LOGIN CONNTROLER plik wyświetla dane o użytkownikach oraz opcje co można zrobić z użytkownikami.
  5.  */
  6. $Template = new Template();
  7.  
  8.  
  9. @ $swap = $_GET['list_sort'];
  10. @ $swaplvl = $_GET['lvl'];
  11.  
  12. switch ($swap) {
  13. case 'name':
  14. $sort = "username";
  15. break;
  16. case 'register':
  17. $sort = "id";
  18. break;
  19. case 'online':
  20. $sort = "logDate";
  21. break;
  22.  
  23. default:
  24. $sort = "id";
  25. break;
  26. }
  27.  
  28. switch ($swaplvl) {
  29. case 'all':
  30. $lvl = "level > 1";
  31. break;
  32. case 'admins':
  33. $lvl = "level > 1 AND level < 4";
  34. break;
  35. case 'users':
  36. $lvl = "level = 4";
  37. break;
  38.  
  39. default:
  40. $lvl = "level > 1";
  41. break;
  42. }
  43.  
  44. if (isset($options)) {
  45.  
  46. } else {
  47. // PAGINATION
  48. DataManager::setQuery("SELECT count(*) FROM mod_members WHERE $lvl ");
  49. $count = DataManager::getArray();
  50. $pagination = new Pagination($count[0][0], 20, @$_GET['page']);
  51. $limit = $pagination->getData();
  52. $sql = "SELECT id, username, level, regDate, editDate, email
  53. FROM mod_members WHERE $lvl ORDER BY $sort LIMIT " . $limit['limit'] . "";
  54. }
  55.  
  56. // Odnosniki ktore maja zachowac w pamieci lvl.
  57. include 'model/url.php';
  58. $name = url('list_sort = name');
  59. $register = url('list_sort = register');
  60. $online = url('list_sort = online');
  61. $Template->setArray('list_sort', array('name' => $name, 'register' => $register, 'online' => $online));
  62.  
  63. DataManager::getInstance();
  64. DataManager::setQuery($sql);
  65. $date = DataManager::getArray();
  66.  
  67. include 'lang/PL.php';
  68. $Template->setArray('lang', $lang);
  69. $Template->setArray('result', $date);
  70. $Template->setArray('pagination', $pagination->getData());
  71. $Template->load('view/v_users.php');
  72.  
  73.  
  74.  
  75.  
  76.  
Crozin
1. Controler? Ponglish na całego... wink.gif
2. Oba switche powinny być w warstwie modelu.
3. Odbieranie danych z URL-a ($_GET) w sumie też powinno lecieć przez model.
4. Cały mechanizm stronicowania.
5. Cały DataManager powinien siedzieć w modelu.
KotWButach
Dziękuję za wskazowki jednak nie jestem pewien co do switcha co powinna zwracać więc funkcja i jak to ma działać (wyglądać) mogł bym prosić cie o mały pseudokod?

Tak ponglish jest to fakt biggrin.gif staram sie z PL przechodzić na EN ale to nie jest proste i siła przyzwyczajenia bierze górę.

Co do Bazy danych rozumeim że sql w modelu i zwracam tylko to właściwie dane które zapisuje do $TEMPLETE celem dostępności dla vidoku.
CuteOne
Co do switcha
  1. class Model_X {
  2.  
  3. protected $_swap = array(
  4. 'name' => 'username',
  5. 'register' => 'id'
  6. );
  7.  
  8. public function __construct(array $options = array()) {
  9.  
  10. if(!empty($options)) {
  11.  
  12. $this->setOptions($options);
  13. }
  14. }
  15.  
  16. // to mozna wywalic do klasy rodzica
  17. protected function setOptions($options) {
  18.  
  19. foreach($options as $key => $value) {
  20.  
  21. $this->_swap[$key] = $value;
  22. }
  23. }
  24.  
  25.  
  26. public function hasSwap($key) {
  27.  
  28. if(array_key_exists($key, $this->_swap)) {
  29.  
  30. return true;
  31. }
  32.  
  33. return false;
  34. }
  35.  
  36. public function getSwap($key) {
  37.  
  38. return $this->_swap[$key];
  39. }
  40. }
  41.  
  42. // dane z jakiegoś configa
  43. $config = array(
  44. 'login' => 'userlogin',
  45. 'id' => 'uniqid'
  46. );
  47.  
  48. $m = new Model_X($config);
  49.  
  50. if($m -> hasSwap('id')) {
  51.  
  52. echo $m -> getSwap('id');
  53. }


Jak lecisz w OOP to od początku do końca smile.gif Dobra rada - zobacz swoje do jakiegoś frameworka jak buduje się aplikacje
KotWButach
Dziękuję za rady jak popoprawiam prześlę ponownie smile.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.