Index: model/interceptor.php =================================================================== --- model/interceptor.php (revision 0) +++ model/interceptor.php (revision 0) @@ -0,0 +1,27 @@ +intercepts($name) ) { + return $interceptor->get($name, $params, $namespace); + } + } + if (count($params) == 0) { return new $name; } else { @@ -30,4 +40,16 @@ return $class->newInstanceArgs($params); } } + + /** + * Register an object that can intercept the request made to + * api_model_factory::get() and return a different object. + * An interceptor should provide two methods; + * - an "intercepts" method takes a class name and returns boolean + * (true if the interceptor want to intercept) + * - a "get" method which returns the object, given it's class name + */ + public static function registerInterceptor($interceptor) { + self::$interceptors[] = $interceptor; + } }