00001 <?php 00025 require_once 'Zend/Filter/Interface.php'; 00026 00033 class Zend_Filter implements Zend_Filter_Interface 00034 { 00040 protected $_filters = array(); 00041 00047 protected static $_defaultNamespaces = array(); 00048 00055 public function addFilter(Zend_Filter_Interface $filter) 00056 { 00057 $this->_filters[] = $filter; 00058 return $this; 00059 } 00060 00069 public function filter($value) 00070 { 00071 $valueFiltered = $value; 00072 foreach ($this->_filters as $filter) { 00073 $valueFiltered = $filter->filter($valueFiltered); 00074 } 00075 return $valueFiltered; 00076 } 00077 00083 public static function getDefaultNamespaces() 00084 { 00085 return self::$_defaultNamespaces; 00086 } 00087 00094 public static function setDefaultNamespaces($namespace) 00095 { 00096 if (!is_array($namespace)) { 00097 $namespace = array((string) $namespace); 00098 } 00099 00100 self::$_defaultNamespaces = $namespace; 00101 } 00102 00109 public static function addDefaultNamespaces($namespace) 00110 { 00111 if (!is_array($namespace)) { 00112 $namespace = array((string) $namespace); 00113 } 00114 00115 self::$_defaultNamespaces = array_unique(array_merge(self::$_defaultNamespaces, $namespace)); 00116 } 00117 00123 public static function hasDefaultNamespaces() 00124 { 00125 return (!empty(self::$_defaultNamespaces)); 00126 } 00127 00139 public static function get($value, $classBaseName, array $args = array(), $namespaces = array()) 00140 { 00141 trigger_error( 00142 'Zend_Filter::get() is deprecated as of 1.9.0; please update your code to utilize Zend_Filter::filterStatic()', 00143 E_USER_NOTICE 00144 ); 00145 00146 return self::filterStatic($value, $classBaseName, $args, $namespaces); 00147 } 00148 00166 public static function filterStatic($value, $classBaseName, array $args = array(), $namespaces = array()) 00167 { 00168 require_once 'Zend/Loader.php'; 00169 $namespaces = array_merge((array) $namespaces, self::$_defaultNamespaces, array('Zend_Filter')); 00170 foreach ($namespaces as $namespace) { 00171 $className = $namespace . '_' . ucfirst($classBaseName); 00172 if (!class_exists($className)) { 00173 try { 00174 Zend_Loader::loadClass($className); 00175 } catch (Zend_Exception $ze) { 00176 continue; 00177 } 00178 } 00179 $class = new ReflectionClass($className); 00180 if ($class->implementsInterface('Zend_Filter_Interface')) { 00181 if ($class->hasMethod('__construct')) { 00182 $object = $class->newInstanceArgs($args); 00183 } else { 00184 $object = $class->newInstance(); 00185 } 00186 return $object->filter($value); 00187 } 00188 } 00189 require_once 'Zend/Filter/Exception.php'; 00190 throw new Zend_Filter_Exception("Filter class not found from basename '$classBaseName'"); 00191 } 00192 }