3v4l.org

run code in 300+ PHP versions simultaneously
<?php namespace App\Entity; abstract class Entity { protected $repository; protected $transformColumns = []; protected $transformValues = []; protected $properites = []; public function __construct () { $this->transformColumns = [ 'archivedAt' => (function ($column) { return 'archived_at'; }) ]; } public function set (string $column, $value) { if (isset($this->transformColumns[$column])) { $column = $this->transformColumns[$column]($column); } if (isset($this->transformValues[$column])) { $value = $this->transformValues[$column]($value); } $this->properites[$column] = $value; return; } public function __set ($column, $value) { return $this->set($column, $value); } public function get(string $column) { if (isset($this->transformColumns[$column])) { $column = $this->transformColumns[$column]($column); } return $this->properites[$column]; } public function __get ($column) { return $this->get($column); } } $o = new Entity(); $o->archived_at = (new DateTime())->format('d-m-Y H:i:s'); echo '<pre>', var_dump($o), '</pre>';

preferences:
50.83 ms | 402 KiB | 5 Q