Doctrine orm targetEntity=";上的类重新声明错误;“是”;ZF2内

Doctrine orm targetEntity=";上的类重新声明错误;“是”;ZF2内,doctrine-orm,zend-framework2,autoload,Doctrine Orm,Zend Framework2,Autoload,我目前在代码库中面临一个奇怪的错误。您可以在上看到完整的ZF2s项目代码 我对教义一无所知,但我浏览了来源,我想我发现了问题: 这里,这段代码期望autoloader返回的值为true,但这不是spl autoloader机制的要求,因此autoloader可以返回NULL 为了检查我是否正确,请在您的项目中的条令中替换doctor/Common/ClassLoader.php中的第224行 } else if ($loader[0]->{$loader[1]}($className))

我目前在代码库中面临一个奇怪的错误。您可以在上看到完整的ZF2s项目代码 我对教义一无所知,但我浏览了来源,我想我发现了问题:

这里,这段代码期望autoloader返回的值为true,但这不是spl autoloader机制的要求,因此autoloader可以返回NULL

为了检查我是否正确,请在您的项目中的条令中替换
doctor/Common/ClassLoader.php中的第224行

} else if ($loader[0]->{$loader[1]}($className)) {


Ans查看问题是否已修复,如果我是正确的-然后向条令项目报告错误

我不了解条令,但我浏览了源代码,我认为我发现了问题:

这里,这段代码期望autoloader返回的值为true,但这不是spl autoloader机制的要求,因此autoloader可以返回NULL

为了检查我是否正确,请在您的项目中的条令中替换
doctor/Common/ClassLoader.php中的第224行

} else if ($loader[0]->{$loader[1]}($className)) {


Ans查看问题是否已修复,如果我是正确的-然后将错误报告给条令项目

我正在编写一个失败的测试用例来尝试解决这个问题。问题似乎在于无声自动加载器(如@Xerkus所解释的)与条令/普通本身不兼容。要解决此问题,请使用ZF2(或composer)中的
StandardAutoloader
,而不是使用
ClassMapAutoloader
。这将解决问题,直到修补程序准备就绪


更新:补丁建议出现在

我正在编写一个失败的测试用例来尝试解决这个问题。问题似乎在于无声自动加载器(如@Xerkus所解释的)与条令/普通本身不兼容。要解决此问题,请使用ZF2(或composer)中的
StandardAutoloader
,而不是使用
ClassMapAutoloader
。这将解决问题,直到修补程序准备就绪


更新:在

上建议使用修补程序。我遇到了相同的问题,但它仅在我尝试从CLI控制器操作加载实体时出现。从HTTP控制器操作调用相同的映射器方法可以正常工作。我也遇到了同样的问题,只是它仅在我尝试从CLI控制器操作加载实体时出现。从HTTP控制器操作调用相同的映射器方法可以正常工作。我不明白他们为什么在注册的自动加载器中循环
class\u exists($NAME,TRUE)
应该足够了,因为问题与DoctrineORMModule有关(我不认为我们在任何地方都使用Doctrine的类加载器),我不认为这是正确的方式…@Ocramius,正如irc中所讨论的:问题在类加载器的classExists()实用方法中,该方法调用注册的autoloaderSerata,看看我的答案。。。Xerkus实际上已经解决了这个问题:)也感谢你!由于你几乎把它归结为自动加载,我给了你一个公认的答案,甚至ic@Ocramius也详细解释了错误的来源,你们两个都很荣幸!兴奋地等待一个补丁,因为ClassMapAutoloader在我的例子中提高了大约40%的性能:我不明白为什么它们会在注册的Autoloader中循环
class\u exists($NAME,TRUE)
应该足够了,因为问题与DoctrineORMModule有关(我不认为我们在任何地方都使用Doctrine的类加载器),我不认为这是正确的方式…@Ocramius,正如irc中所讨论的:问题在类加载器的classExists()实用方法中,该方法调用注册的autoloaderSerata,看看我的答案。。。Xerkus实际上已经解决了这个问题:)也感谢你!由于你几乎把它归结为自动加载,我给了你一个公认的答案,甚至ic@Ocramius也详细解释了错误的来源,你们两个都很荣幸!激动地等待着补丁,因为ClassMapAutoloader在我的例子中提高了大约40%的性能:DI将您的提交应用于我的本地克隆,它解决了这个问题。感谢您和Xerkus对此进行的故障排除!我将您的提交应用于我的本地克隆,它解决了这个问题。感谢您和Xerkus对此进行的故障排除!
} else if ($loader[0]->{$loader[1]}($className)) {
} else if ($loader[0]->{$loader[1]}($className) && class_exists($className, false)) {