Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: Czy dobrze zrozumiałem MVC ?
Forum PHP.pl > Forum > PHP > Pro > Archiwum Pro
porowski
Podaje przykład modelu oraz kontrolera wg mojej logiki związanej z MVC i bardzo bym prosił o odpowiedzenie czy w dobrym kierunku ide.

Skryptów jeszcze nie testowałem więc mogą być jakieś drobne błędy - chodzi tylko o założenie czy dobrze rozumuje MVC:

mo_admin.class.php
  1. <?php
  2.  
  3. // klasa obslugi administratorow
  4. class MoAdmin
  5. {
  6. private $DB;
  7.  
  8. public function __construct()
  9. {
  10. $this->DB = $GLOBALS['db'];
  11. }
  12.  
  13. // dodawanie / edytowanie danych admina oraz jego praw dostepu
  14. public function AddEditAdmin($login, $pass, $fname, $lname, $active, $mail, $gg, $skype, $tel, $right, $adminId = NULL)
  15. {
  16. try
  17. {
  18. $this->DB->beginTransaction();
  19.  
  20. // jezeli przy wywolaniu funkcji zmienna $adminId jest NULL to dodajemy, jezeli je
    st liczba to update
  21. if(is_null($adminId))
  22. {
  23. $this->DB->exec('INSERT INTO core_admin VALUES ("default", "' . $login . '", "' . $pass . '", "' . $fname . '", "' . $lname . '", "' . $active . '", "' . $mail . '", ' . $gg . ', "' . $skype . '", "' . $tel . '", ' . $right[0] . ', ' . $right[1] . ', ' . $right[2] . ', ' . $right[3] . ', ' . $right[4] . ')');
  24. }
  25. else
  26. {
  27. $this->DB->exec('UPDATE core_admin SET login = "' . $login . '", fname = "' . $fname . '", lname = "' . $lname . '", active = "' . $active . '", mail = "' . $mail . '", gg = ' . $gg . ', skype = "' . $skype . '", tel = "' . $tel . '", r_1 = ' . $right[0] . ', r_2 = ' . $right[1] . ', r_3 = ' . $right[2] . ', r_4 = ' . $right[3] . ', r_5 = ' . $right[4] . ' WHERE id = ' . $adminId);
  28. }
  29.  
  30. $result = EDS_OK;
  31. }
  32. catch(PDOException $exception)
  33. {
  34. $result = EDS_ERROR;
  35. }
  36.  
  37. endTransaction(EDS_OK == $result);
  38. return $result;
  39. }
  40.  
  41. // ustawienie admin na aktywny / nieaktywny
  42. public function ActiveAdmin($adminId)
  43. {
  44. try
  45. {
  46. $this->DB->beginTransaction();
  47. $this->DB->exec('UPDATE core_admin SET active = NOT active WHERE id = ' . $adminId);
  48.  
  49. $result = EDS_OK;
  50. }
  51. catch(PDOException $exception)
  52. {
  53. $result = EDS_ERROR;
  54. }
  55.  
  56. endTransaction(EDS_OK == $result);
  57. return $result;
  58. }
  59.  
  60. // zmiana hasla admina
  61. public function ChangePassAdmin($adminId, $pass)
  62. {
  63. try
  64. {
  65. $this->DB->beginTransaction();
  66. $this->DB->exec('UPDATE core_admin SET pass = "' . $pass . '" WHERE id = ' . $adminId);
  67.  
  68. $result = EDS_OK;
  69. }
  70. catch(PDOException $exception)
  71. {
  72. $result = EDS_ERROR;
  73. }
  74.  
  75. endTransaction(EDS_OK == $result);
  76. return $result;
  77. }
  78.  
  79. // logowanie admina
  80. public function LoginAdmin($login, $pass)
  81. {
  82. $sqlRow = $this->DB->query('SELECT COUNT(id) FROM core_admin WHERE pass = "' . $pass . '" AND active = true AND login = "' . $login . '"');
  83.  
  84. // jezeli sql zwroci ze jest taki rekord i tylko jego wartosc wynosci 1 to sie log
    ujemy
  85. if(== $sqlRow->rowCount())
  86. {
  87. $result = EDS_OK;
  88. }
  89. else
  90. {
  91. $result = EDS_ERROR;
  92. }
  93.  
  94. return $result;
  95. }
  96.  
  97. // pobieramy dane oraz prawa admina
  98. public function GetAdmin($adminId)
  99. {
  100. $sqlRow = $this->DB->query('SELECT * FROM core_admin WHERE id = ' . $adminId);
  101. return $sqlRow->fetch(PDO::FETCH_ASSOC);
  102. }
  103. }
  104.  
  105. ?>


co_admin.class.php
  1. <?php
  2.  
  3. require_once './model_object/mo_admin.class.php';
  4.  
  5. class CoAdmin
  6. {
  7. private $mMoAdmin;
  8.  
  9. public function __construct()
  10. {
  11. $this->mMoAdmin = new MoAdmin();
  12. }
  13.  
  14. public function AddEditAdmin($login, $pass, $fname, $lname, $active, $mail, $gg, $skype, $tel, $right, $adminId = NULL)
  15. {
  16. $mail = strtolower($mail);
  17. $skype = strtolower($skype);
  18.  
  19. $error = array();
  20.  
  21. if(!matchStr(RX_LOGIN, $login))
  22. {
  23. array_push($error, ED_ERROR_RX_LOGIN);
  24. }
  25. if(!matchStr(RX_PASS, $pass))
  26. {
  27. array_push($error, ED_ERROR_RX_PASS);
  28. }
  29. if(!matchStr(RX_NAME, $fname))
  30. {
  31. array_push($error, ED_ERROR_RX_FNAME);
  32. }
  33. if(!matchStr(RX_NAME, $fname))
  34. {
  35. array_push($error, ED_ERROR_RX_LNAME);
  36. }
  37. if(!is_null($mail) && !matchStr(RX_MAIL, $mail))
  38. {
  39. array_push($error, ED_ERROR_RX_MAIL);
  40. }
  41. if(!is_null($gg) && !is_int($gg))
  42. {
  43. array_push($error, ED_ERROR_RX_GG);
  44. }
  45. if(!is_null($skype) && !matchStr(RX_NET_NAME, $skype))
  46. {
  47. array_push($error, ED_ERROR_RX_SKYPE);
  48. }
  49. if(!is_null($tel) && !matchStr(RX_TEL_FAX, $tel))
  50. {
  51. array_push($error, ED_ERROR_RX_TEL);
  52. }
  53.  
  54. if(count($error) == 0)
  55. {
  56. $pass = passHash($pass);
  57. $result = $this->mMoAdmin->AddEditAdmin($login, $pass, $fname, $lname, $active, $mail, $gg, $skype, $tel, $right, $adminId);
  58. }
  59. else
  60. {
  61. $result = $error;
  62. }
  63.  
  64. return $result;
  65. }
  66.  
  67. public function ActiveAdmin($adminId)
  68. {
  69. if(is_int($adminId) && $adminId != 0 && $adminId != 1)
  70. {
  71. $result = $this->mMoAdmin->ActiveAdmin($adminId);
  72. }
  73. else
  74. {
  75. $result = ED_ERROR_NO_INT;
  76. }
  77.  
  78. return $result;
  79. }
  80.  
  81. public function ChangePassAdmin($adminId, $pass)
  82. {
  83. if(is_int($adminId) && $adminId != 0)
  84. {
  85. if(matchStr(RX_PASS, $pass))
  86. {
  87. $pass = passHash($pass);
  88. $result = $this->mMoAdmin->ChangeAdmin($adminId, $pass);
  89. }
  90. else
  91. {
  92. $result = ED_ERROR_RX_PASS;
  93. }
  94. }
  95. else
  96. {
  97. $result = ED_ERROR_NO_INT;
  98. }
  99.  
  100. return $result;
  101. }
  102.  
  103. public function LoginAdmin($login, $pass)
  104. {
  105. if(matchStr(RX_LOGIN, $login) && matchStr(RX_PASS, $pass))
  106. {
  107. $pass = passHash($pass);
  108. $result = $this->mMoAdmin->LoginAdmin($login, $pass);
  109. }
  110. else
  111. {
  112. $result = ED_ERROR_RX_LOGIN_PASS;
  113. }
  114.  
  115. return $result;
  116. }
  117.  
  118. public function GetAdmin($adminId)
  119. {
  120. if(is_int($adminId) && $adminId != 0)
  121. {
  122. $data = $this->mMoAdmin->GetAdmin($adminId);
  123. $result = array('data' => array('login' => $data['login'], 'fname' => $data['fname'], 'lname' => $data['lname'], 'active' => $data['active'], 'mail' => $data['mail'], 'gg' => $data['gg'], 'skype' => $data['skype'], 'tel' => $data['tel']), 'right' => array('r_0' => $data['r_0'], 'r_1' => $data['r_1'], 'r_2' => $data['r_2'], 'r_3' => $data['r_3'], 'r_4' => $data['r_4']));
  124. }
  125. else
  126. {
  127. $result = ED_ERROR_NO_INT;
  128. }
  129.  
  130. return $result;
  131. }
  132. }
  133.  
  134. ?>


Jako WIDOK traktuje szablony smarty z indywidualnymi pluginami na nie...
Strzałek
ehh, czy to trochę nie za dużo?

Każdy teraz założy temat "czy dobrze zrozumiałem mvc?". Nie można w jednym pytać o wszystko ? :|
Prph
Dodaj do kodu komentarze :]

Ogolnie wydaje sie chyba dobrze.
Osobiscie, podzielilbym kontroler na poszczegolne klasy akcji. Ale wybor jest Twoj.

Pozdrawiam.
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-2024 Invision Power Services, Inc.