Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> [PHP] Wzorzec MVC, pobieranie danego kontrollera (klasy), jak zapobiec załadowaniu wbudowanych klas i innych
Luneth
post 11.06.2010, 17:55:53
Post #1





Grupa: Zarejestrowani
Postów: 95
Pomógł: 7
Dołączył: 16.07.2007
Skąd: Gorzów Wielkopolski

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


Witam, otóż zainteresowałem się wzorcem MVC w PHP, a dokładniej tymi przykładami: 1 oraz 2.
Mam pytanie, w jaki sposób zabezpieczyć możliwość stworzenia egzemplarza np PDO lub innej wcześniej zadeklarowanej, gdy użytkownik wpisze w adresie PDO etc?

Ten post edytował Luneth 11.06.2010, 17:57:43


--------------------
"It's always darkest before the dawn."
Go to the top of the page
+Quote Post
marcio
post 11.06.2010, 18:35:37
Post #2





Grupa: Zarejestrowani
Postów: 2 291
Pomógł: 156
Dołączył: 23.09.2007
Skąd: ITALY-MILAN

Ostrzeżenie: (10%)
X----


Jesli cie dobrze zrozumialem to poprzem routing wczytujesz tylko kontrolery modulow a nie wszystko :]


--------------------
Zainteresowania: XML | PHP | MY(SQL)| C# for .NET | PYTHON
http://code.google.com/p/form-builider/
Moj blog
Go to the top of the page
+Quote Post
Luneth
post 11.06.2010, 18:41:21
Post #3





Grupa: Zarejestrowani
Postów: 95
Pomógł: 7
Dołączył: 16.07.2007
Skąd: Gorzów Wielkopolski

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


Owszem, ale wcześniej mam request_once'em załadowane dwa pliki z dwoma klasami, klasy parsującej adres oraz klasę która ustanawia połączenie z mySQL używając PDO. A to przecież działa tak: metoda zwraca nazwę kontrolera do linijki: $moduł = new $router->getKontroler(); , a getKontroler() polega na znalezieniu jedynie wartości odp zmiennej i zwróceniu jej. Więc jak user wpisze sobie PDO czy Database (ta moja klasa) to się utworzy egzemplarz danej klasy. A funkcję __autoload mam zdefiniowaną tak, że się faktycznie ładują tylko pliki z określonego folderu smile.gif


--------------------
"It's always darkest before the dawn."
Go to the top of the page
+Quote Post
marcio
post 11.06.2010, 18:46:18
Post #4





Grupa: Zarejestrowani
Postów: 2 291
Pomógł: 156
Dołączył: 23.09.2007
Skąd: ITALY-MILAN

Ostrzeżenie: (10%)
X----


Troche zamotales i ja nie rozumiem albo zle zaprojektowales aplikacje snitch.gif

Pokaz jakis krotki kod:)


--------------------
Zainteresowania: XML | PHP | MY(SQL)| C# for .NET | PYTHON
http://code.google.com/p/form-builider/
Moj blog
Go to the top of the page
+Quote Post
Luneth
post 11.06.2010, 18:52:40
Post #5





Grupa: Zarejestrowani
Postów: 95
Pomógł: 7
Dołączył: 16.07.2007
Skąd: Gorzów Wielkopolski

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


Kod index.php (proszę o lekkie potraktowanie, nie jest jakiś szczególnie wykończony, to eksperymentalne pisanie kodu jak na razie winksmiley.jpg)

  1. <?php
  2.  
  3. $sitePath = realpath(dirname(__FILE__));
  4.  
  5.  
  6. require_once($sitePath.'/Core/Database.php');
  7. require_once($sitePath.'/Core/MainController.php');
  8.  
  9. function __autoload($className) {
  10. $fileName = $className.'.controller.php';
  11. if(file_exists('controllers/'.$fileName))
  12. {
  13. require_once('controllers/'.$fileName);
  14. if(!class_exists($className,0)) throw new Exception('Podany plik nie zawiera klasy '.$className);
  15. }
  16. else throw new Exception('Nie odnaleziono pliku zawierającego klasę '.$className);
  17. }
  18.  
  19. try
  20. {
  21. $mainController = new Controller();
  22. $controller = $mainController->getController();
  23. $action = $mainController->getAction();
  24. $controller = new $controller($action);
  25. }
  26. catch(Exception $e)
  27. {
  28. echo $e->getMessage();
  29. }
  30.  
  31. ?>


Ten MainController.php zawiera klasę Controller, która działa u mnie jak klasa router w przykładach które podałem.

EDIT: Ok, do metody kontrolera dodałem sprawdzanie czy plik o podanej nazwie istnieje w folderze Controllers smile.gif Dzieki za chęci.

Ten post edytował Luneth 11.06.2010, 19:41:18


--------------------
"It's always darkest before the dawn."
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: 19.07.2025 - 16:42