Files
2025-08-14 22:41:49 +02:00

101 lines
2.1 KiB
PHP

<?php
namespace Gedmo\Tool\Wrapper;
use Doctrine\ODM\MongoDB\DocumentManager;
use Doctrine\Common\Persistence\ObjectManager;
use Doctrine\ORM\EntityManagerInterface;
use Gedmo\Tool\WrapperInterface;
use Gedmo\Exception\UnsupportedObjectManagerException;
/**
* Wraps entity or proxy for more convenient
* manipulation
*
* @author Gediminas Morkevicius <gediminas.morkevicius@gmail.com>
* @license MIT License (http://www.opensource.org/licenses/mit-license.php)
*/
abstract class AbstractWrapper implements WrapperInterface
{
/**
* Object metadata
*
* @var object
*/
protected $meta;
/**
* Wrapped object
*
* @var object
*/
protected $object;
/**
* Object manager instance
*
* @var \Doctrine\Common\Persistence\ObjectManager
*/
protected $om;
/**
* List of wrapped object references
*
* @var array
*/
private static $wrappedObjectReferences;
/**
* Wrap object factory method
*
* @param object $object
* @param ObjectManager $om
*
* @throws \Gedmo\Exception\UnsupportedObjectManagerException
*
* @return \Gedmo\Tool\WrapperInterface
*/
public static function wrap($object, ObjectManager $om)
{
if ($om instanceof EntityManagerInterface) {
return new EntityWrapper($object, $om);
} elseif ($om instanceof DocumentManager) {
return new MongoDocumentWrapper($object, $om);
}
throw new UnsupportedObjectManagerException('Given object manager is not managed by wrapper');
}
public static function clear()
{
self::$wrappedObjectReferences = array();
}
/**
* {@inheritDoc}
*/
public function getObject()
{
return $this->object;
}
/**
* {@inheritDoc}
*/
public function getMetadata()
{
return $this->meta;
}
/**
* {@inheritDoc}
*/
public function populate(array $data)
{
foreach ($data as $field => $value) {
$this->setPropertyValue($field, $value);
}
return $this;
}
}