Ik snap er echt helemaal niks meer van. De logica is me totaal ontsnapt.

Het begin van een controller:


<?php

namespace app\controllers\admin;

class clubsController extends \app\controllers\ControllerParent {
?>


Dat werkt. Maar als ik de

\app\controllers\ControllerParent

verander naar:

app\controllers\ControllerParent

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:


<?php

namespace app\controllers;

use app\controllers\ControllerParent;

class adminController extends ControllerParent {
?>


Maar met het volgende werkt-ie ook!!


use \app\controllers\ControllerParent; // Voila met leading backslash... Geen verschil


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 [ code ] ging niet helemaal goed denk ik!?
in die eerste situatie gebruik je je namespace toch niet?
Tikkes, in het eerste voorbeeld gebruik ik namespaces ook =) Zie het "namespace" keyword...

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.

Reageren