php 在学说中的可存档模式

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了php 在学说中的可存档模式相关的知识,希望对你有一定的参考价值。

<?php

use Doctrine\ORM\Mapping as ORM;
    
/**
 * @ORM\Table(name="item_archive")
 */
class ItemArchive
{

}
<?php

use Doctrine\ORM\Mapping as ORM,
    Doctrine\ORM\Event\LifecycleEventArgs;
    
/**
 * @ORM\Table(name="item")
 * @ORM\HasLifecycleCallbacks
 */
class Item
{

  //
  // Getters & setters here
  //
  
  /**
   * Returns an instance of ItemArchive with all class properties copied. 
   * @param Item $item - the Item to copy properties from 
   * @return ItemArchive
   */
  protected static function createArchive(Item $item)
  {
    $archive = new ItemArchive();
    foreach (get_object_vars($item) as $key => $value) {
      $setter = 'set' . ucfirst($key);
      if (is_callable([$archive, $setter])) {
        $archive->$setter($value);
      }
    }

    return $archive;
  }

  /**
   * @ORM\PreRemove
   * Will be invoked when EntityManager::remove is called, 
   * to persist a copy of the Entity in the archive table. 
   */
  public function onPreRemove(LifecycleEventArgs $eventArgs)
  {
    $archive = self::createArchive($this);
    $eventArgs->getEntityManager()->persist($archive);
  } 
}

以上是关于php 在学说中的可存档模式的主要内容,如果未能解决你的问题,请参考以下文章

symfony2 / 学说:如何将 ResultSetMapping 与计数一起使用

在学说2和zend框架2中如何使用缓存?

在 PHP 中打开并列出 zip 存档中的文件/文件夹

PHP 处理档案中的文件

跨数据库关系学说2和PHP

Symfony2 - 学说:模式:更新失败,实体在包之外(解耦)