Source of file QuickDataObject.php
Size: 1,029 Bytes - Last Modified: 2021-12-23T10:02:11+00:00
/var/www/docs.ssmods.com/process/src/code/Helpers/QuickDataObject.php
12345678910111213141516171819202122232425262728293031323334353637383940414243 | <?php /** * Class QuickDataObject */ class QuickDataObject { /** * @var array */ private static $instances = array(); /** * @param $className * @return mixed */ public static function create($className) { static $extensionInstanceProperty = null; if (!$extensionInstanceProperty) { $extensionInstanceProperty = new ReflectionProperty('Object', 'extension_instances'); $extensionInstanceProperty->setAccessible(true); } if (!isset(self::$instances[$className])) { self::$instances[$className] = new $className(); } $object = clone self::$instances[$className]; $originalExtensions = $extensionInstanceProperty->getValue($object); $extensions = array(); foreach ($originalExtensions as $key => $extension) { $extensions[$key] = clone $extension; } $extensionInstanceProperty->setValue($object, $extensions); return $object; } } |