Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> Aplikacjaw MVC
daniel1302
post 10.08.2008, 15:09:50
Post #1





Grupa: Zarejestrowani
Postów: 602
Pomógł: 30
Dołączył: 1.08.2007
Skąd: Nowy Sącz

Ostrzeżenie: (0%)
-----


Witam, jest to trochę obszerne pytanie.
Mam klasy sterujące grą
  1. <?php
  2. /**********************************************************************
  3. *Autor: daniel1302
  4. *Licencja: by DamnedLand Staff
  5. *Zadanie pliku:
  6. *Plik sterujący całą grą(Jądro aplikacji)
  7. **********************************************************************/
  8.  
  9. Class Config
  10. {
  11. /**
  12. *Odpowiada za konfigurację gry
  13. *
  14. *@return Array Tablica dla podanego elementu
  15. */
  16. public function game ($element=false)
  17. {
  18. #Tablica z konfiguracją
  19. $array_conf = array(
  20. 'db' => array(
  21. 'host' => 'localhost',
  22. 'port' => '',
  23. 'user' => 'root',
  24. 'pass' => '',
  25. 'dbname' => 'game'),
  26. 'game' => array(
  27. 'name' => 'DamnedLand',
  28. 'url' => 'http://www.damnedland.eu',
  29. 'email' => 'activuser@damnedland.eu',
  30. 'team' => 'DamnedLand Staff')
  31. );
  32. #Sprawdz czy wybrano element
  33. if ($element == false)
  34. return $array_conf;
  35. else
  36. {
  37. #Sprawdz poprawnośc wprowadzonych danych i zwróć odpowiedni wynik
  38. if (!is_array($array_conf[$element]) && array_key_exists($element, $array_conf))
  39. return false;
  40. else
  41. return $array_conf[$element];
  42. }
  43.  
  44. }
  45.  
  46. /**
  47. *Załaduje i sprasuje konfiguracje frameworka z pliku configuracujnego ini
  48. *
  49. *@return Array Tablica dla podanego elementu
  50. */
  51. public function framework($element=false)
  52. {
  53. #Sprasuj plik z konfiguracją
  54. $array_ini = parse_ini_file('Framework/config.ini', true);
  55. #Jeśli niepodano elementu Frameworka to zwróć wszystkie konfiguracje
  56. if ($element == false)
  57. return $array_ini;
  58. else
  59. {
  60. #Sorawdz czy konfiguracja zapisana jest w formie tablicy
  61. if (!is_array($array_ini[$element]) && array_key_exists($element, $array_ini))
  62. return false; #Jeśli nie zwróć false
  63. else
  64. return $array_ini[$element]; #Jeśl tak zwróć konfiguracje
  65. }
  66. }
  67. }
  68.  
  69. Class DL_Kernel
  70. {
  71. /**
  72. *Zwróci obiekt z konfiguracją
  73. *
  74. *@return Object Tablica dla podanego elementu
  75. *@static
  76. */
  77. static public function loadConfig()
  78. {
  79. return new Config;
  80. }
  81. }
  82. ?>


W klasie Kernel będzie odpowiednio ustalenie czasu itp
Klasa Config jest to klasa odczytująca konfiguracje
Plik config.ini
  1. ;Konfiguracja dla Frameworku
  2. ;            Konfiguracja dla widoku
  3. [view]
  4. root = "view"
  5. ;            Konfiguracja modelu
  6. [model]
  7. controller_type = "YCDB"
  8. data_type = "mysql"
  9. ;            Konfiguracja kontrolera
  10. [controller]


Układ plików jaki stosuję
-game(Cała gra)
--Framework(Cały framework czyli klasa koontrolera widoku modelu validatory itp)
--includes (pliki sterujące grą (Klasy JS funkcje itp)
--View(Widok)
--Model(Warstwa biznesowa)
--Controller(Kontroler)
--./(Wszystkie plikimodułów moduły wykorzystujące kontrolery(normalne skrypty które odpowiadają np admin.php?view=banlist))

W includes mam jeden plik główny(header.php)
zajmuje się on prawym menu testuje gracza czy jest w lochu lub ma bana...
W pliku tym ładowane są wszystkie klasy frameworku(view, controller, model) i includuje go każdy moduł aplikacji



I chciałem spytać czy dobrze to rozplanowałem. z Góry dziękuje i pozdrawiam.


PS. Mam klasę widoku napisaną na podstawie TINY MVC
  1. <?php
  2. /***
  3.  * Name:  Damned Land
  4.  * About: An MVC application framework for PHP
  5.  * Copyright: (C) 2008, Damned Land.
  6.  * Author:  daniel1302[daniel.1302@gmail.com]
  7.  * License: Damned Land Rules 
  8.  * Description: View - class main
  9.  ***/
  10.  
  11. Class DL_View
  12. {
  13. /* Access will put */
  14. public $viewVars;
  15.  
  16. /**
  17. * __construct
  18. * Constructor class. 
  19. * Operation of class will configure.
  20. **/
  21. public function __construct()
  22. {
  23. $this->viewVars = array();
  24. }
  25.  
  26. /**
  27. * assign
  28. * Function class. 
  29. * Variable will add for display 
  30. **/
  31. public function assign($varKey, $varValue=null)
  32. {
  33. if (isset($varValue))
  34. $this->viewVars[$varKey] &= $varValue;
  35. elseif (is_array($varKey))
  36. foreach ($varKey as $k => $v)
  37. if (is_int($k))
  38. $this->viewVars[] &= $v;
  39. else
  40. $this->viewVars[$k] &= $v;
  41. else
  42. return false;
  43. }
  44.  
  45. /**
  46. * display
  47. * Function class. 
  48. * Variable will transfer and file will display 
  49. **/
  50. public function display($file)
  51. {
  52. $tConfig = Config::$framework;
  53. $templateDir = $tConfig['viewsDir'];
  54. $dl_file = $templateDir.'/'.$file.'.php';
  55. if (!file_exists($dl_file))
  56. {
  57. return false;
  58. }
  59. elseif (is_array($this->viewVars))
  60. {
  61. extract($this->viewVars, EXTR_PREFIX_SAME, "dl");
  62. return require_once($dl_file);
  63. }
  64. else
  65. {
  66. return false;
  67. }
  68. }
  69.  
  70. static public function instance()
  71. {
  72. return new DL_View;
  73. }
  74. }
  75. ?>


Chciałem spytać czy jest tu coś do zmiany na lepsze lub do poprawy. I cze lepiej jest to zastosować czy np Smarty/OPT
Go to the top of the page
+Quote Post
Crozin
post 10.08.2008, 21:13:27
Post #2





Grupa: Zarejestrowani
Postów: 6 476
Pomógł: 1306
Dołączył: 6.08.2006
Skąd: Kraków

Ostrzeżenie: (0%)
-----


Zauważyłeś, że Config::game() i Config::framework() róznią się tylko pierwszą instrukcją, a cała reszta się powtarza?
  1. <?
  2. class Config{
  3. public function game($element = false){
  4. $array_conf = array(...);
  5. return $this->returnSth($array_conf, $element);
  6. }
  7.  
  8. public function framework($element = false){
  9. $array_conf = parse_ini_file(..., true);
  10. return $this->returnSth($array_conf, $element);
  11. }
  12.  
  13. private function returnSth(array $data, $element){
  14. if($element == false)
  15. return $data;
  16. else{
  17. if(!is_array($data[$element]) && array_key_exists($element, $data))
  18. return false;
  19. else
  20. return $array_ini[$element];
  21. }
  22. }
  23. }
  24. ?>
Go to the top of the page
+Quote Post
wrzasq
post 10.08.2008, 22:21:42
Post #3





Grupa: Zarejestrowani
Postów: 206
Pomógł: 18
Dołączył: 6.03.2006
Skąd: Szczecin

Ostrzeżenie: (0%)
-----


if (!is_array($array_ini[$element]) && array_key_exists($element, $array_ini))
zamien warunki kolejnoscia, jesli wskazany index nie istnieje to nie ma co sprawdzac, czy jest tablica, natomiast na odwrot - najpierw sprawdzac, czy w ogole istnieje - jest jaknajbardziej slusznie, zeby uniknac E_NOTICE.


--------------------
Go to the top of the page
+Quote Post
daniel1302
post 11.08.2008, 20:00:28
Post #4





Grupa: Zarejestrowani
Postów: 602
Pomógł: 30
Dołączył: 1.08.2007
Skąd: Nowy Sącz

Ostrzeżenie: (0%)
-----


Witam ponownie, dziękuje za pomoc a reszta jest w miarę?
Go to the top of the page
+Quote Post

Reply to this topicStart new topic
1 Użytkowników czyta ten temat (1 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Wersja Lo-Fi Aktualny czas: 25.04.2024 - 15:22