_features = array(); } function &get($name) { $instance =& FeatureFactory::get_instance(); return $instance->_get($name); } function &_get($name) { if (!isset($this->__features[$name])) { $this->_features[$name] =& $this->_load($name); }; return $this->_features[$name]; } function &_load($name) { $normalized_name = strtolower(preg_replace('/[^\w\d\.]/i', '_', $name)); $file_name = HTML2PS_DIR.'features/'.$normalized_name.'.php'; $class_name = 'Feature'.join('',array_map('ucfirst',explode('.',$normalized_name))); if (!file_exists($file_name)) { $null = null; return $null; }; require_once($file_name); $feature_object =& new $class_name; return $feature_object; } function &get_instance() { static $instance = null; if (is_null($instance)) { $instance =& new FeatureFactory(); }; return $instance; } } ?>