* "zone" = "ResourceZone"
* })
*/
-class Resource
+abstract class Resource
{
+ const TYPE_ZONE = 'zone';
+ const TYPE_PLACE = 'place';
+ const TYPE_COMPUTER = 'computer';
+
const STATUS_ACTIVE = 1;
const STATUS_INACTIVE = 0;
{
return $this->status == self::STATUS_ACTIVE;
}
+
+ static public function createFromType($type)
+ {
+ switch ($type) {
+ case self::TYPE_ZONE:
+
+ return new ResourceZone();
+
+ case self::TYPE_COMPUTER:
+
+ return new ResourceComputer();
+
+ case self::TYPE_PLACE:
+
+ return new ResourcePlace();
+
+ default:
+
+ throw new \InvalidArgumentException(sprintf('No resource type named "%s"', $type));
+ }
+ }
}