访问未声明的静态属性:Doctrine \ ODM \ MongoDB \ Mapping \ Driver \ AnnotationDriver ::

时间:2011-07-25 12:54:57

标签: php doctrine mongodb

我在我的所有文档上都面临着这个关键问题,它有@ODM \ UniqueIndex,@ ODM \ _ InheritanceType,@ ORM \ DiscriminatorField等定义的字段。基本上,如果除了类的@ODM \ Document注释之外还有其他内容,我在尝试使用DocumentManager检索文档时会收到以下错误:

出于某种原因,它试图访问一个带有奇怪字符的静态属性,如$D7 1等。发生了什么?有人可以帮我解决这个问题,因为我们已经在我们的项目中遇到了障碍。正在使用ODM的最新主分支。

注意:只有在启用APC时才会抛出此异常。如果我禁用APC并重启apache,它可以正常工作。此外,当启用APC时,它适用于第一次加载,但对于每个连续请求都会失败。 (猜测这种情况正在发生,因为只有在第一次请求后才填充APC操作码缓存)

错误

Fatal error: Access to undeclared static property: Doctrine\ODM\MongoDB\Mapping\Driver\AnnotationDriver::$�S in /home/dayson/projects/www/textme/ninja/library/Doctrine/ODM/MongoDB/Mapping/Driver/AnnotationDriver.php on line 146

Call Stack
#   Time    Memory  Function    Location
.....
6   0.0037  1319032 Doctrine\ODM\MongoDB\DocumentManager->find( )   ../Test.php:34
7   0.0038  1322736 Doctrine\ODM\MongoDB\DocumentManager->getRepository( )  ../DocumentManager.php:574
8   0.0038  1322736 Doctrine\ODM\MongoDB\DocumentManager->getClassMetadata( )   ../DocumentManager.php:474
9   0.0038  1322736 Doctrine\ODM\MongoDB\Mapping\ClassMetadataFactory->getMetadataFor( )    ../DocumentManager.php:273
10  0.0038  1322736 Doctrine\ODM\MongoDB\Mapping\ClassMetadataFactory->loadMetadata( )  ../ClassMetadataFactory.php:180
11  0.0050  1495432 Doctrine\ODM\MongoDB\Mapping\Driver\AnnotationDriver->loadMetadataForClass( )   ../ClassMetadataFactory.php:243

代码

$dm->find('Document\User', '4e283aabc2749a4b7d0001dd')

文件代码

<?php
namespace Document;
use Doctrine\ODM\MongoDB\Mapping\Annotations as ODM;

/**
 * @ODM\Document
 * @ODM\UniqueIndex(keys={"mobile"="asc"})
 */
class User extends \Document\AbstractDocument
{
    /**
     * @var string
     * @ODM\Id
     */
    protected $id;

    /**
     * @var string
     * @ODM\String
     */
    protected $mobile;

}

1 个答案:

答案 0 :(得分:0)

这是APC 3.1.3p1的错误。我升级到3.1.9版本,现在已经解决了。

希望这为将来可能会遇到它的其他人节省一些时间。不要使用debian / ubuntu存储库中的APC包。改为使用PECL。