php Laravel 4中奇怪的反射行为

php Laravel 4中奇怪的反射行为,php,reflection,laravel-4,Php,Reflection,Laravel 4,这似乎是一个相当简单的反射问题,但我无法理解。我在Debian上使用Laravel4.2和PHP5.6.6-1 基本上,我希望从Laravel QueueHandler中的类生成一个新对象,如下所示: $className = 'MyClass'; $myobject = new $className (); 这不管用。我想尽了一切办法,却不知道该去哪里找。这个代码不存在;当它应该: <?php use Pronamic\Twinfield\Secure\Config; use Pron

这似乎是一个相当简单的反射问题,但我无法理解。我在Debian上使用Laravel4.2和PHP5.6.6-1

基本上,我希望从Laravel QueueHandler中的类生成一个新对象,如下所示:

$className = 'MyClass';
$myobject = new $className ();
这不管用。我想尽了一切办法,却不知道该去哪里找。这个代码不存在;当它应该:

<?php
use Pronamic\Twinfield\Secure\Config;
use Pronamic\Twinfield\Customer\CustomerFactory;

class TwinfieldQueueHandler {
  private $twinfieldConfig = null;

是否有人有任何关于在何处查找以及如何调试的提示?

ReflectionClass
将忽略当前名称空间,并完全使用
语句。必须指定类的完全限定名称:

$r = new ReflectionClass('Pronamic\Twinfield\Customer\CustomerFactory');
正如一位用户指出的:

为了反映PHP5.3中的命名空间类,您必须始终指定该类的完全限定名,即使您使用“use”语句对包含的命名空间使用了别名


请注意,您可以通过传递对象来解决此问题:

$test0 = new CustomerFactory ($this->twinfieldConfig);

$r = new ReflectionClass($test0);

这是一个延伸,但我能想到的唯一一件事是反射/变量方法没有正确地选择名称空间。也许可以尝试使用完整的显式命名空间定义类?i、 e.
$twinfieldFactoryClass='\Pronamic\Twinfield\Customer\CustomerFactory'。但可能性很小。。
$test0 = new CustomerFactory ($this->twinfieldConfig);

$r = new ReflectionClass($test0);