输入类型中的PhP名称空间

输入类型中的PhP名称空间,php,zend-framework,io,namespaces,Php,Zend Framework,Io,Namespaces,在我们的发展环境中,我有以下奇怪之处。假设我有两门课 一个位于命名空间\wtf中 namespace \wtf\isWrongHere; class DrStrange { } 我还有一个类,我通过依赖注入传递这个类 namespace \normalPpl; class ThisHasNoLogic { public function __construct(DrStrange $strange){ //here be dragons

在我们的发展环境中,我有以下奇怪之处。假设我有两门课 一个位于命名空间\wtf中

namespace \wtf\isWrongHere;

class DrStrange {

}
我还有一个类,我通过依赖注入传递这个类

 namespace \normalPpl;


     class ThisHasNoLogic {
       public function __construct(DrStrange $strange){ 
           //here be dragons
       }
     }
现在,当我通过以下方式实例化该类时:

$whata = new ThisHasNoLogic(new \wtf\isWrongHere\DrStrange());
在我的dev-debian机器上,我得到了正常的实例,在我们的dev机器(我们的实时服务器的克隆)上,我得到了正常的结果

但在我们的实时机器上,我发现了一个致命错误。这怎么可能?

PHP可捕获致命错误:传递给xxxx的参数2必须是xxxxx的实例,给定的aaaar的实例,在…QQ中调用。

在所有服务器中,它都在接受输入类型,但在live it上,它会告诉我传递的类与所需的不匹配

aka\wtf\isErrorhere\DrStrange不是DrStrange的一个实例,它只是一个简单的例子WTH@12这是我的时刻

以下是规格:

开发机器:

PHP 5.3.3-7+带Suhosin补丁(cli)的挤压14(制造日期:2012年8月6日) 14:18:06)版权所有(c)1997-2009 PHP Group Zend Engine v2.3.0, 版权所有(c)1998-2010 Zend Technologies Xdebug v2.2.5版权所有(c)2002-2014,作者:德里克·雷特汉斯 Suhosin v0.9.32.1版权所有(c)2007-2010,由Sektionins GmbH提供

试验机:

PHP 5.3.3-7+squeeze15 with Suhosin-Patch (cli) (built: Mar  4 2013 13:11:17)
Copyright (c) 1997-2009 The PHP Group
Zend Engine v2.3.0, Copyright (c) 1998-2010 Zend Technologies
    with Suhosin v0.9.32.1, Copyright (c) 2007-2010, by SektionEins GmbH

Server version: Apache/2.2.16 (Debian)
Server built:   Mar  3 2013 12:09:44
现场:

我不知道该怎么做才能让测试服务器像活的一样工作。有人有什么建议吗

更新:

当我使用

使用\wtf\isErrorhere\DrStrange


它起作用了。但是我没有办法在忽略这个错误的测试系统上重现它。我想在不同的机器上复制它。这是我的实际问题,一年多以来一直困扰着我的团队

您必须给dr一个奇怪的名称空间才能让它工作

namespace \normalPpl;

use wtf\isWrongHere\DrStrange;

 class ThisHasNoLogic {
   public function __constructor(DrStrange $strange){ 
       //here be dragons
   }
 }

如果您有一个良好的自动加载(请参阅或)

Tht是伪代码。我会改正的。(更新:完成:D)Aaa忘了告诉它。已经这样做了,这就解决了问题。实际的问题是我没有办法测试我的代码,想在我的测试机器上复制它(将更新问题)。这个问题,无法测试总是困扰着我们,导致出现不稳定的错误,每两个月就给我们带来一次可怕的后果。你看过我的最后一句话并调查了自动加载解决方案了吗。这是一个最佳实践。是的,我做到了。如前所述,我们知道使用名称空间的解决方案,问题是相同的代码可以在我们的开发和测试服务器上工作,但不能在我们的实时服务器上工作。我怀疑PHP中的设置有所不同,但不知道是什么。你试过了吗?
PHP 5.3.3-7+squeeze15 with Suhosin-Patch (cli) (built: Mar  4 2013 13:11:17)
Copyright (c) 1997-2009 The PHP Group
Zend Engine v2.3.0, Copyright (c) 1998-2010 Zend Technologies
    with Suhosin v0.9.32.1, Copyright (c) 2007-2010, by SektionEins GmbH



Server version: Apache/2.2.16 (Debian)
Server built:   Mar  3 2013 12:09:44
namespace \normalPpl;

use wtf\isWrongHere\DrStrange;

 class ThisHasNoLogic {
   public function __constructor(DrStrange $strange){ 
       //here be dragons
   }
 }