Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: php 5.3 router
Forum PHP.pl > Forum > PHP > Object-oriented programming
aras785
Witam. Uczę się php 5.3 i przerabiam MVC, który ostatnio napisałem (wrzuciłem na forum) i mam pytanie dotyczące use i namespace.
Jak sprawdzić czy klasa istnieje? Mam to ogarnąc przez: spl_autoload_register i tam zrobić np. przekierowanie do strony z bledem?
To co niżej podałem to nwywala wyjątek z spl...
  1. <?php
  2. namespace Lib;
  3. class Router {
  4. //private $controller;
  5. //private $action;
  6. public function __construct(Request $request) {
  7. //$this->controller = $request->getController();
  8. //$this->action = $request->getAction();
  9. if($class = new \Application\Controller\Index) {
  10.  
  11. }
  12.  
  13. }
  14. }


Crozin
class_exists?
aras785
Nie o to chodzi. Jeśli klasa nie istnieje to wywala mi wyjątek z spl... A mi chodzi aby tego uniknąć i przekierować gdzie indziej. I sprawdzanie typu class_exists dziala ale tylko gdy klasa istnieje jesli nie to error.

I jeszcze daje plik index:

  1. <?php
  2. spl_autoload_extensions(".php");
  3. spl_autoload_register();
  4.  
  5. use Lib\Router;
  6. use Lib\Request;
  7. $application = new Router(new Request());


//Edit

Udało mi się rozwiązać banalny problem... Uparłem się na to spl

  1. <?php
  2. function __autoload($c)
  3. {
  4. $file = $c.".php";
  5. if(file_exists($file)) {
  6. require_once $file;
  7. }
  8. }
  9.  
  10. use Lib\Router;
  11. use Lib\Request;
  12. $application = new Router(new Request());
  13.  


Dzięki:)
sazian
  1. function ClassLoader($classname)
  2. {
  3. $file=$classname.'.php';
  4. if(file_exists($file) && is_readable($file))
  5. {
  6. require_once($file);
  7. if(class_exists($classname, false))
  8. {
  9. return true;
  10. }
  11. }
  12. return false;
  13. }
  14.  
  15. spl_autoload_register('ClassLoader');
  16.  
  17.  
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.