Kako sam ja to ukapirao da radi. Ja sam mislio da ako definisem namespace nekoj klasi necu morati da stavljam require_once ili da koristim spl_autoload.
Ja npr sam pokusao u index.php da uradim ovo:
Code:
$controller = new Core\Controller\ModuleController();
$controller = new Core\Controller\ModuleController();
E sada to prijavljuje gresku da klasa ModuleController nije pronadjena. A kada uradim include() iznad i importujem datu klasu onda radi.
Mislim nije mi jasna tematika, zasto bi ja onda koristio namespace kada opet moram da koristim include/require_once?
Za moju strukru je malo teze iskoristiti spl_autoload jer je meni sve u vise foldera odvojeno.
Citat:
|
-Root
|-- Library(dir)
|-----Core(dir)
|-------- Controllers(dir)
|----------------BaseController.php
|----------------FrontController.php
|----------------ModuleController.php
|---------------- helper.php
|----------------Exception(dir)
|---------------------BaseControllerException.php
|---------------------FrontControllerException.php
|---------------------ModuleControllerException.php
|----------- Database
|---------------- Doctrine
|-----------------doctrine.php
|--index.php
|--.htaccess
-Root
|-- Library(dir)
|-----Core(dir)
|-------- Controllers(dir)
|----------------BaseController.php
|----------------FrontController.php
|----------------ModuleController.php
|---------------- helper.php
|----------------Exception(dir)
|---------------------BaseControllerException.php
|---------------------FrontControllerException.php
|---------------------ModuleControllerException.php
|----------- Database
|---------------- Doctrine
|-----------------doctrine.php
|--index.php
|--.htaccess
I tako dalje imam foldere koji sadrze klase, controllers, uri.
Nije mi jasno zasto moram require ako sam definisao namespace?
Evo kako sam definisao :
Code:
namespace Core\Controllers;
class ModuleController {
protected $urlvalues;
protected $action;
public function __construct($action, $urlvalues) {
$this->action = $action;
$this->urlvalues = $urlvalues;
}
public function ExecuteAction() {
return $this->{$this->action}();
}
protected function ReturnView($viewmodel, $fullview) {
$viewloc = 'views/' . get_class($this) . '/' . $this->action . '.php';
if ($fullview) {
require('views/maintemplate.php');
} else {
require($viewloc);
}
}
}
namespace Core\Controllers;
class ModuleController {
protected $urlvalues;
protected $action;
public function __construct($action, $urlvalues) {
$this->action = $action;
$this->urlvalues = $urlvalues;
}
public function ExecuteAction() {
return $this->{$this->action}();
}
protected function ReturnView($viewmodel, $fullview) {
$viewloc = 'views/' . get_class($this) . '/' . $this->action . '.php';
if ($fullview) {
require('views/maintemplate.php');
} else {
require($viewloc);
}
}
}
I na kraju kao test u index.php moram sledece da bi bio uspesno instanciran :
Code:
require 'library/core/controller/ModuleController.php';
$obj = new Core\Controller\ModuleController();
require 'library/core/controller/ModuleController.php';
$obj = new Core\Controller\ModuleController();
Ja sam to drugacije ukapriao onda ili ne znam zato vas i pitam. Mislio sam ako definisem namespace da nemam potreba za imortovanje...
Jel moze neko da mi pojasni uopste sustinu svega ovoga i kako to radi. Citajuci php manuel nisam nasao na primer kada su klase odvojene u vise direktorijuma i kako se onda koristi namespaces ...
Hvala...
Kada vidjamo uvek ista lica, na kraju ona postaju deo našeg života. A kada postanu
deo našeg života,
onda žele i da nam ga izmene. I ako ne bude po njihovom, nije im pravo. Jer, svaki
čovek ima tačnu predstavu kako bi trebalo da živimo svoj život. A nikad nemaju pojma
kako treba da prožive sopstveni život.
deo našeg života,
onda žele i da nam ga izmene. I ako ne bude po njihovom, nije im pravo. Jer, svaki
čovek ima tačnu predstavu kako bi trebalo da živimo svoj život. A nikad nemaju pojma
kako treba da prožive sopstveni život.