我在codeigniter中使用doctrine2(2.0.3),並且我注意到當我添加,更改甚至刪除一些被作爲生命週期插入的方法時,只是忽略了變化。例如,我添加doctrine 2阻止方法(或類似問題)的LifecycleCallbacks緩存
/*
* @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
是的,你需要使用正確的DocBlocks/**和功能必須是公開的(否則它不能在課堂外調用)。 – Cobby 2011-04-06 12:20:55