All examples below are based on the guarantee that all files exist in their correct location. I've treble checked this.
(1) This works when NOT using namespaces:
$a = "ClassName";
$b = new $a();
This doesn't work:
// 'class not found' error, even though file is there
namespace path\to\here;
$a = "ClassName";
$b = new $a();
This DOES work:
namespace path\to\here;
$a = "path\to\here\ClassName";
$b = new $a();
So it seems the namespace declaration is ignored when using a variable to instantiate a class.
Is there a better way (than my last example) so I don't need to go through some code and change every variable to include the namespace?