有沒有一種方法在流中鉤入或擴展存儲庫的更新方法/函數?無論如何,我喜歡創建幾個消息(作爲對象)。我可以擴展或掛接到存儲庫的更新方法嗎?
當前我們使用控制器中的UnitOfWork將對象提供給存儲庫進行更新。但有了這個,消息傳遞只是在那個函數中工作,而不是在我更新那個對象的時候「全局」。
我不喜歡把它放在那個對象的setters中。在我看來,這將是令人討厭的代碼。
任何想法?
有沒有一種方法在流中鉤入或擴展存儲庫的更新方法/函數?無論如何,我喜歡創建幾個消息(作爲對象)。我可以擴展或掛接到存儲庫的更新方法嗎?
當前我們使用控制器中的UnitOfWork將對象提供給存儲庫進行更新。但有了這個,消息傳遞只是在那個函數中工作,而不是在我更新那個對象的時候「全局」。
我不喜歡把它放在那個對象的setters中。在我看來,這將是令人討厭的代碼。
任何想法?
您可以嘗試製作YourRepository
,它將延伸Repository
並實施您的update()
方法(或致電parent::update()
並實現您的其他邏輯)。然後,您所有的存儲庫應繼承YourRepository
類,而不是Repository
。
創建YourRepository
:
use TYPO3\Flow\Annotations as Flow;
use TYPO3\Flow\Persistence\Repository;
/**
* @Flow\Scope("singleton")
*/
class YourRepository extends Repository {
public function update($object) {
parent::update($object);
// your logic
}
}
或Repository
類複製粘貼update()
方法主體並添加您的邏輯:
public function update($object) {
if (!is_object($object) || !($object instanceof $this->entityClassName)) {
$type = (is_object($object) ? get_class($object) : gettype($object));
throw new \TYPO3\Flow\Persistence\Exception\IllegalObjectTypeException('The value given to update() was ' . $type . ' , however the ' . get_class($this) . ' can only store ' . $this->entityClassName . ' instances.', 1249479625);
}
$this->persistenceManager->update($object);
}
域Model
的每個存儲庫現在應該從YourRepository
繼承:
use TYPO3\Flow\Annotations as Flow;
/**
* @Flow\Scope("singleton")
*/
class ModelRepository extends YourRepository {
}
我想說你應該看看Flows AOP功能。在關注點分離(SoC)的前提下,存儲庫的任務不是發送通知。
看一看文檔: Aspect Oriented Programming
超。幫助我很多。週末愉快。謝謝 – Pete