Source of file EntityTimestampable.php
Size: 2,639 Bytes - Last Modified: 2023-11-16T22:56:02+01:00
/home/websites/teicee/packagist/site/phpdoc/conf/../vendor/teicee/dorm-bundle/src/Traits/EntityTimestampable.php
| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108 | <?phpnamespace TIC\DormBundle\Traits; use Doctrine\ORM\Mapping as ORM; /** * Gestion automatique des champs createdAt et updatedAt d'une entité Doctrine. * * Alternative sans nécessiter ni extension Doctrine, ni bundle tiers, * tels que Gedmo et StofDoctrineExtensionsBundle. * @see Gedmo\Timestampable\Traits\TimestampableEntity; * * ATTENTION: nécesite d'activer sur la classe de l'entité "@ORM\HasLifecycleCallbacks" */trait EntityTimestampable {/** * Flag permettant de désactiver les actions des méthodes en prePersist et preSave */private $isTimestampable = true; /** * @ORM\Column(type="datetime") */private $createdAt; /** * @ORM\Column(type="datetime", nullable=true) */private $updatedAt; // --------------------------------------------------------------------- Custom methods /** * Gestion de l'activation des actions en prePersist et preSave * * @param bool $state Nouvel état d'activation (true=actif / false=inactif) * @return bool Retourne l'état d'activation en cours */public function doTimestampable(?bool $state = null): bool { if (null !== $state) $this->isTimestampable = $state; return $this->isTimestampable; } // --------------------------------------------------------------------- Accessors (getters) /** * Get the creation date. */public function getCreatedAt(): ?\DateTimeInterface { return $this->createdAt; } /** * Get the modification date. */public function getUpdatedAt(): ?\DateTimeInterface { return $this->updatedAt; } // --------------------------------------------------------------------- Mutators (setters) /** * Set the creation date. */public function setCreatedAt(?\DateTimeInterface $createdAt): self { $this->createdAt = $createdAt; return $this; } /** * Set the modification date. */public function setUpdatedAt(?\DateTimeInterface $updatedAt): self { $this->updatedAt = $updatedAt; return $this; } // --------------------------------------------------------------------- Lifecycle callbacks /** * Actions automatiques si l'entité dispose de "@ORM\HasLifecycleCallbacks" * @ORM\PrePersist */public function createTimestampableValues(): void { if (! $this->isTimestampable) return; $this->createdAt = new \DateTimeImmutable(); $this->updatedAt = new \DateTimeImmutable(); } /** * Actions automatiques si l'entité dispose de "@ORM\HasLifecycleCallbacks" * @ORM\PreUpdate */public function updateTimestampableValues(): void { if (! $this->isTimestampable) return; $this->updatedAt = new \DateTimeImmutable(); } } |