Chciałbym używać w swojej aplikacji przestrzeni nazw, a także użyć autoloadera klas.
Na początku pokaże wam strukturę mojej aplikacji.

posiadam taki Autoloader
<?php class Autoloader { { if (self::$loader == NULL) self::$loader = new self(); return self::$loader; } public function __construct() { } public function controller($class) { try{ require_once($class); } else { throw new Exception('nie mozna dolaczyc pliku: ' .$class); } } catch (Exception $e){ } } }
taki Controller
namespace Framework\Core\Controller; require_once('libs/yaml/Yaml.php'); require_once('View.php'); abstract class Controller { protected $pdo; protected $view; public function __construct() { try { $file='c:/wamp/www/framework/core/parameters/parameters.yml'; $database= Yaml::parse($file); $database=(object)$database['database']; $this->pdo= new PDO($database->type.':host='.$database->host.';dbname='.$database->dbname, $database->user, $database->password); $this->pdo->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION); } catch(DBException $e) { } $this->view= new View(); } abstract public function indexAction(); }
i taki IndexContoller
namespace App\Contollers\IndexContoller; use Framework\Core\Controller as Contoller; class IndexController extends Controller { function __construct() { parent::__construct(); } public function indexAction() { } public function showAction($arg=false){ $this->view->render('Index::show'); } public function addAction() { } }
po wpisaniu adresu w przeglądarce który powinien uruchomić metodę show z IndexContoller otrzymuje taki komunikat:
string 'App\Contollers\IndexContoller\Controller' (length=40) nie mozna dolaczyc pliku: App\Contollers\IndexContoller\Controller
co robię nie tak, coś nie mogę zrozumieć tych namespace, bo Autoloader bez użycia namespace implementuje poprawnie