namespaces met of zonder leading backslash wanneer wel en niet?
Het begin van een controller:
Code (php)
1
2
3
4
5
6
2
3
4
5
6
<?php
namespace app\controllers\admin;
class clubsController extends \app\controllers\ControllerParent {
?>
namespace app\controllers\admin;
class clubsController extends \app\controllers\ControllerParent {
?>
Dat werkt. Maar als ik de
verander naar:
werkt het niet meer... Erreur: "Class 'app\controllers\app\controllers\ControllerParent' not found" (en dat klopt natuurlijk, maar hoezo pakt-ie m relatief?).
Als ik de parent class use en dan zonder namespace aanroep, hoeft er geen \ voor. Het volgende werkt:
Code (php)
1
2
3
4
5
6
7
8
2
3
4
5
6
7
8
<?php
namespace app\controllers;
use app\controllers\ControllerParent;
class adminController extends ControllerParent {
?>
namespace app\controllers;
use app\controllers\ControllerParent;
class adminController extends ControllerParent {
?>
Maar met het volgende werkt-ie ook!!
Soms is het bij het inline gebruiken van namespaced classes ook zo. Soms met er een \ voor, soms moet het juist niet en volgens mij maakt het soms niet uit... Ik heb de voorbeelden nu even niet bij de hand =) maar ik ben echt de weg kwijt. Het ziet er allemaal een beetje inconsequent uit.
Iemand ervaring met namespaces die het me uit kan leggen? Uit de docs op php.net leid ik af dat beginnen met een \ altijd goed is (want ik begin altijd met de 'hoofdnamespace' ("app"). Maar blijkbaar is dat niet zo!
Dank groot zijnde de mijne.
(P.S. Ik mis een PREVIEW functie... Het is maar een beetje gokken hoe ik code moet aangeven. Elk forum doet dat namelijk anders.)
-- edit: de
Gewijzigd op 24/01/2011 00:28:14 door Rudie dirkx
in die eerste situatie gebruik je je namespace toch niet?
De documentatie is daar toch vrij duidelijk in?
Pim, de documentatie is daar inderdaad vrij duidelijk in, en toch is het een rare bedoeling. Vidn jij het logisch dat er soms wel en soms geen backslash voor moet/mag? Als jij het logisch vindt, mag je het me uitleggen... Ik zie de logica niet.