PHP code example of hostnet / entity-revision-component
1. Go to this page and download the library: Download hostnet/entity-revision-component library. Choose the download type require.
2. Extract the ZIP file and open the index.php.
3. Add this code to the index.php.
<?php
require_once('vendor/autoload.php');
/* Start to develop here. Best regards https://php-download.com/ */
hostnet / entity-revision-component example snippets
use Acme\Bundle\AcmeBundle\AcmeRevisionFactory;
use Hostnet\Component\EntityRevision\Resolver\RevisionResolver;
use Hostnet\Component\EntityTracker\Listener\EntityChangedListener;
use Hostnet\Component\EntityTracker\Provider\EntityAnnotationMetadataProvider;
use Hostnet\Component\EntityTracker\Provider\EntityMutationMetadataProvider;
/* @var $em \Doctrine\ORM\EntityManager */
$event_manager = $em->getEventManager();
// default doctrine annotation reader
$annotation_reader = new AnnotationReader();
// setup annotation
$revision_resolver = new RevisionResolver($annotation_metadata_provider);
// this factory will provide the revision and as author Henk
$revision_factory = new AcmeRevisionFactory('Henk');
// creating the revision listener
$revision_listener = new RevisionListener($revision_resolver, $revision_factory);
$event_manager->addEventListener('preFlush', $entity_changed_listener);
$event_manager->addEventListener('postFlush', $revision_listener);
$event_manager->addEventListener('entityChanged', $revision_listener);
use Doctrine\ORM\Mapping as ORM;
use Hostnet\Component\EntityRevision\RevisionInterface;
/**
* @ORM\Entity
*/
class Revision implements RevisionInterface
{
/**
* @ORM\...
*/
private $author;
/**
* @ORM\...
*/
private $created_at;
public function __construct($author, \DateTime $created_at)
{
$this->author = $author;
$this->created_at = $created_at;
}
public function getUser()
{
return $this->author;
}
public function getCreatedAt()
{
return $this->created_at;
}
}
use Doctrine\ORM\Mapping as ORM;
use Hostnet\Component\EntityRevision\RevisionableInterface;
/**
* @ORM\Entity
* @Revision
*/
class MyEntity implements RevisionableInterface
{
/**
* The current revision of the contact person
*
* @ORM\ManyToOne(targetEntity="Revision")
* @ORM\JoinColumn(name="revision_id", referencedColumnName="id")
* @var Revision
*/
private $revision;
public function setRevision(RevisionInterface $revision)
{
$this->revision = $revision;
}
public function getRevision()
{
return $this->revision;
}
}
namespace Acme\Bundle\AcmeBundle;
use Hostnet\Component\EntityRevision\Factory\RevisionFactoryInterface;
class AcmeRevisionFactory implements RevisionFactoryInterface
{
private $author;
public function __construct($author)
{
$this->author = $author;
}
public function createRevision(\DateTime $created_at)
{
return new Revision($this->author, $created_at);
}
}
// imagine all instances to be Revisionable
$user->setName('Henk');
$address->setNumber('42');
$em->flush();
var_dump($user->getRevision() === $address->getRevision()); // true
Loading please wait ...
Before you can download the PHP files, the dependencies should be resolved. This can take some minutes. Please be patient.