<?php
class FeatureFactory {
var $_features;
function FeatureFactory() {
$this->_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;
}
}
?>