name = $name; $this->family = $family; $this->protocol = $protocol; $this->flags = $flags; } function getName() { return $this->name; } } class DeviceFactory { private $models = Array( DeviceType::CiscoIPCommunicator => Array('name' => "Communicator", 'family' => DeviceFamily::CiscoJava, 'protocol' => DeviceProtocol::SKINNY, 'flags' => DeviceFlags::Communicator), DeviceType::CiscoIPPhone6901 => Array('name' => "", 'family' => DeviceFamily::Cisco, 'protocol' => DeviceProtocol::SKINNY, 'flags' => null), DeviceType::CiscoIPPhone6911 => Array('name' => "", 'family' => DeviceFamily::Cisco, 'protocol' => DeviceProtocol::SKINNY, 'flags' => null), DeviceType::CiscoIPPhone6921 => Array('name' => "", 'family' => DeviceFamily::Cisco, 'protocol' => DeviceProtocol::SKINNY, 'flags' => null), DeviceType::CiscoIPPhone6941 => Array('name' => "", 'family' => DeviceFamily::Cisco, 'protocol' => DeviceProtocol::SKINNY, 'flags' => null), DeviceType::CiscoIPPhone6945 => Array('name' => "", 'family' => DeviceFamily::Cisco, 'protocol' => DeviceProtocol::SKINNY, 'flags' => null), DeviceType::CiscoIPPhone6961 => Array('name' => "", 'family' => DeviceFamily::Cisco, 'protocol' => DeviceProtocol::SKINNY, 'flags' => null), DeviceType::CiscoIPPhone7902 => Array('name' => "", 'family' => DeviceFamily::Cisco, 'protocol' => DeviceProtocol::SKINNY, 'flags' => null), DeviceType::CiscoIPPhone7905 => Array('name' => "", 'family' => DeviceFamily::Cisco, 'protocol' => DeviceProtocol::SKINNY, 'flags' => null), DeviceType::CiscoIPPhone7906 => Array('name' => "", 'family' => DeviceFamily::Cisco, 'protocol' => DeviceProtocol::SKINNY, 'flags' => null), DeviceType::CiscoIPPhone7910 => Array('name' => "", 'family' => DeviceFamily::Cisco, 'protocol' => DeviceProtocol::SKINNY, 'flags' => null), DeviceType::CiscoIPPhone7911 => Array('name' => "", 'family' => DeviceFamily::CiscoJava, 'protocol' => DeviceProtocol::BOTH, 'flags' => null), DeviceType::CiscoIPPhone7912 => Array('name' => "", 'family' => DeviceFamily::CiscoJava, 'protocol' => DeviceProtocol::BOTH, 'flags' => null), DeviceType::CiscoIPPhone7920 => Array('name' => "", 'family' => DeviceFamily::Cisco, 'protocol' => DeviceProtocol::BOTH, 'flags' => null), DeviceType::CiscoIPPhone7921 => Array('name' => "", 'family' => DeviceFamily::Cisco, 'protocol' => DeviceProtocol::BOTH, 'flags' => null), DeviceType::CiscoIPPhone7925 => Array('name' => "", 'family' => DeviceFamily::CiscoJava, 'protocol' => DeviceProtocol::BOTH, 'flags' => null), DeviceType::CiscoIPPhone7926 => Array('name' => "", 'family' => DeviceFamily::CiscoJava, 'protocol' => DeviceProtocol::BOTH, 'flags' => null), DeviceType::CiscoIPPhone7931 => Array('name' => "", 'family' => DeviceFamily::Cisco, 'protocol' => DeviceProtocol::SKINNY, 'flags' => null), DeviceType::CiscoIPPhone7935 => Array('name' => "", 'family' => DeviceFamily::Cisco, 'protocol' => DeviceProtocol::BOTH, 'flags' => DeviceFlags::Conference), // Conference Phone DeviceType::CiscoIPPhone7936 => Array('name' => "", 'family' => DeviceFamily::Cisco, 'protocol' => DeviceProtocol::BOTH, 'flags' => DeviceFlags::Conference), // Conference Phone DeviceType::CiscoIPPhone7937 => Array('name' => "", 'family' => DeviceFamily::Cisco, 'protocol' => DeviceProtocol::BOTH, 'flags' => DeviceFlags::Conference), // Conference Phone DeviceType::CiscoIPPhone7940 => Array('name' => "", 'family' => DeviceFamily::Cisco, 'protocol' => DeviceProtocol::BOTH, 'flags' => null), DeviceType::CiscoIPPhone7941 => Array('name' => "", 'family' => DeviceFamily::CiscoJava, 'protocol' => DeviceProtocol::BOTH, 'flags' => null), DeviceType::CiscoIPPhone7941GE => Array('name' => "", 'family' => DeviceFamily::CiscoJava, 'protocol' => DeviceProtocol::BOTH, 'flags' => null), DeviceType::CiscoIPPhone7942 => Array('name' => "", 'family' => DeviceFamily::CiscoJava, 'protocol' => DeviceProtocol::BOTH, 'flags' => null), DeviceType::CiscoIPPhone7945 => Array('name' => "", 'family' => DeviceFamily::CiscoJava, 'protocol' => DeviceProtocol::BOTH, 'flags' => null), DeviceType::CiscoIPPhone7960 => Array('name' => "", 'family' => DeviceFamily::Cisco, 'protocol' => DeviceProtocol::BOTH, 'flags' => null), DeviceType::CiscoIPPhone7961 => Array('name' => "", 'family' => DeviceFamily::CiscoJava, 'protocol' => DeviceProtocol::BOTH, 'flags' => null), DeviceType::CiscoIPPhone7961G => Array('name' => "", 'family' => DeviceFamily::CiscoJava, 'protocol' => DeviceProtocol::BOTH, 'flags' => null), DeviceType::CiscoIPPhone7961GE => Array('name' => "", 'family' => DeviceFamily::CiscoJava, 'protocol' => DeviceProtocol::BOTH, 'flags' => null), DeviceType::CiscoIPPhone7962 => Array('name' => "", 'family' => DeviceFamily::CiscoJava, 'protocol' => DeviceProtocol::BOTH, 'flags' => null), DeviceType::CiscoIPPhone7965 => Array('name' => "", 'family' => DeviceFamily::CiscoJava, 'protocol' => DeviceProtocol::BOTH, 'flags' => null), DeviceType::CiscoIPPhone7970 => Array('name' => "", 'family' => DeviceFamily::CiscoJava, 'protocol' => DeviceProtocol::BOTH, 'flags' => null), DeviceType::CiscoIPPhone7971 => Array('name' => "", 'family' => DeviceFamily::CiscoJava, 'protocol' => DeviceProtocol::BOTH, 'flags' => null), DeviceType::CiscoIPPhone7975 => Array('name' => "", 'family' => DeviceFamily::CiscoJava, 'protocol' => DeviceProtocol::BOTH, 'flags' => null), DeviceType::CiscoIPPhone7985 => Array('name' => "", 'family' => DeviceFamily::CiscoJava, 'protocol' => DeviceProtocol::BOTH, 'flags' => null), DeviceType::CiscoIPPhone8941 => Array('name' => "", 'family' => DeviceFamily::Cisco, 'protocol' => DeviceProtocol::BOTH, 'flags' => null), DeviceType::CiscoIPPhone8945 => Array('name' => "", 'family' => DeviceFamily::Cisco, 'protocol' => DeviceProtocol::BOTH, 'flags' => null), DeviceType::CiscoSPA303G => Array('name' => "", 'family' => DeviceFamily::Spa, 'protocol' => DeviceProtocol::BOTH, 'flags' => null), DeviceType::CiscoSPA502G => Array('name' => "", 'family' => DeviceFamily::Spa, 'protocol' => DeviceProtocol::BOTH, 'flags' => null), DeviceType::CiscoSPA504G => Array('name' => "", 'family' => DeviceFamily::Spa, 'protocol' => DeviceProtocol::BOTH, 'flags' => null), DeviceType::CiscoSPA509G => Array('name' => "", 'family' => DeviceFamily::Spa, 'protocol' => DeviceProtocol::BOTH, 'flags' => null), DeviceType::CiscoSPA512G => Array('name' => "", 'family' => DeviceFamily::Spa, 'protocol' => DeviceProtocol::BOTH, 'flags' => null), DeviceType::CiscoSPA514G => Array('name' => "", 'family' => DeviceFamily::Spa, 'protocol' => DeviceProtocol::BOTH, 'flags' => null), DeviceType::CiscoSPA521S => Array('name' => "", 'family' => DeviceFamily::Spa, 'protocol' => DeviceProtocol::BOTH, 'flags' => null), DeviceType::CiscoSPA521SG => Array('name' => "", 'family' => DeviceFamily::Spa, 'protocol' => DeviceProtocol::BOTH, 'flags' => null), DeviceType::CiscoSPA525G2 => Array('name' => "", 'family' => DeviceFamily::Spa, 'protocol' => DeviceProtocol::BOTH, 'flags' => null), DeviceType::CiscoSPA525G => Array('name' => "", 'family' => DeviceFamily::Spa, 'protocol' => DeviceProtocol::BOTH, 'flags' => null), DeviceType::NokiaESeries => Array('name' => "", 'family' => DeviceFamily::ThirdParty, 'protocol' => DeviceProtocol::SKINNY, 'flags' => null), DeviceType::NokiaICCclient => Array('name' => "", 'family' => DeviceFamily::ThirdParty, 'protocol' => DeviceProtocol::SKINNY, 'flags' => null), DeviceType::CiscoIPAddon7914 => Array('name' => "", 'family' => DeviceFamily::CiscoAddon, 'protocol' => DeviceProtocol::BOTH, 'flags' => null), //14-Button Line Expansion Module DeviceType::CiscoIPAddon7915_1 => Array('name' => "", 'family' => DeviceFamily::CiscoAddon, 'protocol' => DeviceProtocol::BOTH, 'flags' => null), //12-Button Line Expansion Module DeviceType::CiscoIPAddon7915_2 => Array('name' => "", 'family' => DeviceFamily::CiscoAddon, 'protocol' => DeviceProtocol::BOTH, 'flags' => null), //24-Button Line Expansion Module DeviceType::CiscoIPAddon7916_1 => Array('name' => "", 'family' => DeviceFamily::CiscoAddon, 'protocol' => DeviceProtocol::BOTH, 'flags' => null), //12-Button Line Expansion Module DeviceType::CiscoIPAddon7916_2 => Array('name' => "", 'family' => DeviceFamily::CiscoAddon, 'protocol' => DeviceProtocol::BOTH, 'flags' => null), //24-Button Line Expansion Module ); /** * Prevent direct object creation */ final private function __construct() { } /** * Returns new or existing Singleton instance * @return Singleton */ final public static function getInstance(){ if(null !== static::$_instance){ return static::$_instance; } static::$_instance = new static(); return static::$_instance; } public function createFromString($name) { foreach($this->models as $model) { if ($model['name'] == $name) { return new Device($model['name'], $model['family'], $model['protocol'], $model['flags']); } } return null; } public function createFromModelNo($modelno) { if (array_key_exists($modelno, $this->models)) { $model = $models[$modelno]; return new Device($model['name'], $model['family'], $model['protocol'], $model['flags']); } return null; } } ?>