Subversion-Projekte lars-tiefland.php_share

Revision

Details | Letzte Änderung | Log anzeigen | RSS feed

Revision Autor Zeilennr. Zeile
1 lars 1
<?php
2
 
3
class FeatureFactory {
4
  var $_features;
5
 
6
  function FeatureFactory() {
7
    $this->_features = array();
8
  }
9
 
10
  function &get($name) {
11
    $instance =& FeatureFactory::get_instance();
12
    return $instance->_get($name);
13
  }
14
 
15
  function &_get($name) {
16
    if (!isset($this->__features[$name])) {
17
      $this->_features[$name] =& $this->_load($name);
18
    };
19
    return $this->_features[$name];
20
  }
21
 
22
  function &_load($name) {
23
    $normalized_name = strtolower(preg_replace('/[^\w\d\.]/i', '_', $name));
24
    $file_name = HTML2PS_DIR.'features/'.$normalized_name.'.php';
25
    $class_name = 'Feature'.join('',array_map('ucfirst',explode('.',$normalized_name)));
26
 
27
    if (!file_exists($file_name)) {
28
      $null = null;
29
      return $null;
30
    };
31
 
32
    require_once($file_name);
33
    $feature_object =& new $class_name;
34
    return $feature_object;
35
  }
36
 
37
  function &get_instance() {
38
    static $instance = null;
39
    if (is_null($instance)) {
40
      $instance =& new FeatureFactory();
41
    };
42
 
43
    return $instance;
44
  }
45
}
46
 
47
?>