namespaces met of zonder leading backslash wanneer wel en niet?

Overzicht Reageren

Sponsored by: Vacatures door Monsterboard

Rudie dirkx

rudie dirkx

22/01/2011 18:38:11
Quote Anchor link
Ik snap er echt helemaal niks meer van. De logica is me totaal ontsnapt.

Het begin van een controller:

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
<?php

namespace app\controllers\admin;

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


Dat werkt. Maar als ik de
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
\app\controllers\ControllerParent

verander naar:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
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:

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
<?php

namespace app\controllers;

use app\controllers\ControllerParent;

class adminController extends ControllerParent {
?>


Maar met het volgende werkt-ie ook!!

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
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 (php)
PHP script in nieuw venster Selecteer het PHP script
1
ging niet helemaal goed denk ik!?
Gewijzigd op 24/01/2011 00:28:14 door Rudie dirkx
 
PHP hulp

PHP hulp

25/04/2024 09:08:03
 
Tikkes C

Tikkes C

22/01/2011 18:47:54
Quote Anchor link
in die eerste situatie gebruik je je namespace toch niet?
 
Pim -

Pim -

22/01/2011 19:19:21
Quote Anchor link
De documentatie is daar toch vrij duidelijk in?
 
Rudie dirkx

rudie dirkx

24/01/2011 00:29:55
Quote Anchor link
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.
 



Overzicht Reageren

 
 

Om de gebruiksvriendelijkheid van onze website en diensten te optimaliseren maken wij gebruik van cookies. Deze cookies gebruiken wij voor functionaliteiten, analytische gegevens en marketing doeleinden. U vindt meer informatie in onze privacy statement.