Go to the documentation of this file.00001 <?php
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00015 class PrimitiveEnumeration extends IdentifiablePrimitive
00016 {
00017 public function getList()
00018 {
00019 if ($this->value)
00020 return $this->value->getObjectList();
00021 elseif ($this->default)
00022 return $this->default->getObjectList();
00023 else {
00024 $object = new $this->className(
00025 call_user_func(array($this->className, 'getAnyId'))
00026 );
00027
00028 return $object->getObjectList();
00029 }
00030
00031 Assert::isUnreachable();
00032 }
00033
00038 public function of($class)
00039 {
00040 $className = $this->guessClassName($class);
00041
00042 Assert::classExists($className);
00043
00044 Assert::isInstance($className, 'Enumeration');
00045
00046 $this->className = $className;
00047
00048 return $this;
00049 }
00050
00051 public function importValue( $value)
00052 {
00053 if ($value)
00054 Assert::isEqual(get_class($value), $this->className);
00055 else
00056 return parent::importValue(null);
00057
00058 return $this->import(array($this->getName() => $value->getId()));
00059 }
00060
00061 public function import($scope)
00062 {
00063 if (!$this->className)
00064 throw new WrongStateException(
00065 "no class defined for PrimitiveEnumeration '{$this->name}'"
00066 );
00067
00068 $result = parent::import($scope);
00069
00070 if ($result === true) {
00071 try {
00072 $this->value = new $this->className($this->value);
00073 } catch (MissingElementException $e) {
00074 $this->value = null;
00075
00076 return false;
00077 }
00078
00079 return true;
00080 }
00081
00082 return $result;
00083 }
00084 }
00085 ?>