Php 原则2防止方法的LifecycleCallbacks缓存(或类似问题)

Php 原则2防止方法的LifecycleCallbacks缓存(或类似问题),php,caching,doctrine-orm,Php,Caching,Doctrine Orm,我将doctrine2(2.0.3)与codeigniter一起使用,我注意到,当我添加、更改甚至删除一些被称为生命周期的方法时,有时doctrine只是忽略了更改。例如,我加上 /* * @PostLoad */ private function setUpObj() { echo('in'); } 对于@HasLifecycleCallbacks的模型(实体),函数有时在后加载时调用,有时被忽略,有时接受一个更改,然后忽略任何其他更改 在引导文件中,我使用了一些配置选项,下面是

我将doctrine2(2.0.3)与codeigniter一起使用,我注意到,当我添加、更改甚至删除一些被称为生命周期的方法时,有时doctrine只是忽略了更改。例如,我加上

/*
 * @PostLoad
 */
private function setUpObj() {
    echo('in');
}
对于@HasLifecycleCallbacks的模型(实体),函数有时在后加载时调用,有时被忽略,有时接受一个更改,然后忽略任何其他更改

在引导文件中,我使用了一些配置选项,下面是它们的示例,如果需要更多,我将更新我的帖子

    $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

似乎符号和注释必须是这样的

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

也就是说,第一条注释行必须以/**(两颗星)开头,并且函数不能是私有的。或者至少对我来说是这样的,希望它能帮助其他人

是的,你需要使用适当的DocBlocks/**并且函数必须是公共的(否则不能在类外调用)。