Ola,
Het volgende viel mij op.
Stel ik heb een class Bar in de global namespace en die wil ik aanroepen vanuit de namespace Foo.
<?php
namespace Foo;
$bar = new Bar;
?>
Het bovenstaande zal niet werken, omdat de autoloader nu op zoek gaat naar class Foo\Bar.
Het volgende werkt wel:
<?php
namespace Foo;
$bar = new \Bar;
?>
Nu wordt wel de class Bar geladen. Ja... ik weet wat je denkt... "Ja maar dat is toch logisch?"
Inderdaad, maar nu wordt het toch even wat vager. Dit werkt namelijk wel! Wie weet waarom?
<?php
namespace Foo;
$bar = 'Bar';
$bar = new $bar;
?>
Ik geef hier dus niet aan dat het om de root class Bar gaat, maar toch wordt de root class geladen, en niet de class Foo\Bar. Kan iemand uitleggen waarom dat zo is? Of is het een bug?
1.271 views