doctrine 2阻止LifecycleCallbacks缓存方法(或类似问题)

时间:2011-04-04 09:56:51

标签: php caching doctrine-orm

我正在使用带有codeigniter的doctrine2(2.0.3),我注意到当我添加,更改甚至删除一些作为生命周期作为标记的方法时,有时候学说只是忽略了变化。例如,我添加

/*
 * @PostLoad
 */
private function setUpObj() {
    echo('in');
}

对于@HasLifecycleCallbacks函数的模型(实体),函数有时会在postload上调用,有时会被忽略,有时会接受一个更改,然后忽略任何其他更改......

在bootstrap文件中我使用了一些配置选项,这里是它们的示例,如果需要我会更新我的帖子

    $cache = new \Doctrine\Common\Cache\ArrayCache;
$config->setMetadataCacheImpl($cache);
$config->setQueryCacheImpl($cache);
// Set up driver
$Doctrine_AnnotationReader = new \Doctrine\Common\Annotations\AnnotationReader($cache);
$Doctrine_AnnotationReader->setDefaultAnnotationNamespace('Doctrine\ORM\Mapping\\');
$driver = new \Doctrine\ORM\Mapping\Driver\AnnotationDriver($Doctrine_AnnotationReader, APPPATH.'models');
$config->setMetadataDriverImpl($driver);

// Proxy configuration
$config->setProxyDir(APPPATH.'/models/proxies');
$config->setProxyNamespace('Proxies');

    $config->setAutoGenerateProxyClasses( TRUE );

过了一段时间,(通常当我放弃改变方法,散步并回来)它开始正常工作,它接受我的最后一次改变然后我通常创建我的意图并停止改变该方法。 我的服务器是win7上的标准/默认xampp,到目前为止我从未注意到任何类似于任何其他php文件的内容。这与@PostLoad无关,但它也适用于@PrePersist和@PreUpdate

这是正常的行为,还是我错过了什么?

提前致谢, DALIBOR

1 个答案:

答案 0 :(得分:0)

似乎符号和评论必须像这样

/**
 * @PostLoad
 */
function setUpObj() {
    $this->mainObjName = 'models\Page';
    $this->defaultSortingField = 'ordering';
}

意思是,第一条评论行必须以/ **(两颗星)开头,而且函数不能是私有的。或者至少这是它对我有用的方式,希望它可以帮助别人