Show
Ignore:
Timestamp:
09/16/08 01:32:33 (4 months ago)
Author:
nowelium
Message:
 
Files:
1 modified

Legend:

Unmodified
Added
Removed
  • lang/php/misc/Hermit/src/Hermit/Hermit.php

    r19017 r19344  
    44 * @author nowelium 
    55 */ 
    6 abstract class Hermit { 
    7     public static $classMap = array(); 
    8     public static function bind($targetClass, $dao){ 
    9         self::$classMap[$targetClass] = $dao; 
     6class Hermit { 
     7    protected $listeners = array(); 
     8    protected $delegaters = array(); 
     9 
     10    public function __construct($class){ 
     11        $this->proxy = self::__create($class); 
    1012    } 
    11     public static function create(PDO $pdo, $class = null){ 
    12         if(is_null($class)){ 
    13             $e = new Exception; 
    14             $trace = $e->getTrace(); 
    15             return Hermit::create($pdo, $trace[1]['class']); 
     13    public function __call($name, $parameters = array()){ 
     14        if(isset($this->delegater[$name])){ 
     15            return self::__request($this->delegater[$name], $name, $parameters); 
    1616        } 
     17        return self::__request($this->proxy, $name, $parameters); 
     18    } 
     19    protected static function __request(Hermit $hermit, $name, array $params){ 
     20        return $hermit->request($name, $params); 
     21    } 
     22    protected static function __create($class){ 
    1723        if(is_object($class)){ 
    18             return HermitClassProxy::delegate($pdo, new ReflectionObject($class), $class); 
     24            return HermitObjectProxy::delegate(new ReflectionObject($class), $class); 
    1925        } 
    2026        if(isset(Hermit::$classMap[$class])){ 
    21             return self::createProxy($pdo, Hermit::$classMap[$class]); 
     27            return self::__createProxy(Hermit::$classMap[$class]); 
    2228        } 
    2329        if(class_exists($class)){ 
    24             return self::create($pdo, $class); 
     30            return self::__createProxy($class); 
    2531        } 
    26         throw new InvalidArgumentException('nosuch class: ' . $class); 
     32        throw new RuntimeException('Hermit does not create: ' . $class); 
    2733    } 
    28     protected static function createProxy(PDO $pdo, $targetClass){ 
     34    protected static function __createProxy($targetClass){ 
    2935        $reflector = new ReflectionClass($targetClass); 
    3036        if($reflector->isInterface()){ 
    31             return HermitInterfaceProxy::delegate($pdo, $reflector); 
     37            return HermitInterfaceProxy::delegate($reflector); 
    3238        } 
    33         return HermitFutureProxy::delegate($pdo, $reflector, $targetClass); 
     39        return HermitClassProxy::delegate($reflector); 
    3440    } 
    3541} 
     42