Revision: 68
http://sourceforge.net/p/beeframework/code/68
Author: m_plomer
Date: 2013-08-24 20:49:39 +0000 (Sat, 24 Aug 2013)
Log Message:
-----------
- EnumBase / EnumType
Modified Paths:
--------------
trunk/framework/Bee/Persistence/Doctrine2/Types/EnumType.php
Modified: trunk/framework/Bee/Persistence/Doctrine2/Types/EnumType.php
===================================================================
--- trunk/framework/Bee/Persistence/Doctrine2/Types/EnumType.php 2013-08-24 18:24:57 UTC (rev 67)
+++ trunk/framework/Bee/Persistence/Doctrine2/Types/EnumType.php 2013-08-24 20:49:39 UTC (rev 68)
@@ -12,11 +12,6 @@
const ENUM_BASE_TYPE = 'Bee\Utils\EnumBase';
/**
- * @var array
- */
- private $values;
-
- /**
* @var \ReflectionClass
*/
private $reflClass;
@@ -28,14 +23,8 @@
return null;
}
- public function __construct() {
- $this->reflClass = new \ReflectionClass(static::getEnumClassName());
- if (!$this->reflClass->isSubclassOf(self::ENUM_BASE_TYPE)) {
- throw new \UnexpectedValueException('"' . $this->reflClass . '" is not a subclass of "' . self::ENUM_BASE_TYPE . '"');
- }
- }
-
public function getSqlDeclaration(array $fieldDeclaration, AbstractPlatform $platform) {
+ if (!$this->reflClass) self::init();
$values = array_map(function ($val) {
return "'" . $val . "'";
}, $this->reflClass->getMethod('getValues')->invoke(null));
@@ -43,10 +32,12 @@
}
public function convertToPHPValue($value, AbstractPlatform $platform) {
+ if (!$this->reflClass) self::init();
return $this->reflClass->getMethod('get')->invoke(null, $value);
}
public function convertToDatabaseValue($value, AbstractPlatform $platform) {
+ if (!$this->reflClass) self::init();
if (!$this->reflClass->isInstance($value)) {
throw new \UnexpectedValueException('Not a valid enum element for "' . self::ENUM_BASE_TYPE . '": ' . $value);
}
@@ -56,6 +47,13 @@
return $value->val();
}
+ private function init() {
+ $this->reflClass = new \ReflectionClass(static::getEnumClassName());
+ if (!$this->reflClass->isSubclassOf(self::ENUM_BASE_TYPE)) {
+ throw new \UnexpectedValueException('"' . $this->reflClass . '" is not a subclass of "' . self::ENUM_BASE_TYPE . '"');
+ }
+ }
+
public function getName() {
return self::getEnumName();
}
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
|