What are PHP traits and when should you use them?
A trait is a group of methods intended for reuse in multiple classes. Traits help avoid code duplication when classes don't share a natural inheritance hierarchy.
trait Timestampable
{
private ?DateTime $createdAt = null;
private ?DateTime $updatedAt = null;
public function setCreatedAt(): void
{
$this->createdAt = new DateTime();
}
public function setUpdatedAt(): void
{
$this->updatedAt = new DateTime();
}
public function getCreatedAt(): ?DateTime { return $this->createdAt; }
public function getUpdatedAt(): ?DateTime { return $this->updatedAt; }
}
trait SoftDeletable
{
private ?DateTime $deletedAt = null;
public function softDelete(): void { $this->deletedAt = new DateTime(); }
public function isDeleted(): bool { return $this->deletedAt !== null; }
}
class Article
{
use Timestampable, SoftDeletable; // use multiple traits
}
class Product
{
use Timestampable; // reuse just what you need
}
All Comments