Changeset 19344 for lang/php/misc/Hermit/src/Hermit/Hermit.php
- Timestamp:
- 09/16/08 01:32:33 (4 months ago)
- Files:
-
- 1 modified
-
lang/php/misc/Hermit/src/Hermit/Hermit.php (modified) (1 diff)
Legend:
- Unmodified
- Added
- Removed
-
lang/php/misc/Hermit/src/Hermit/Hermit.php
r19017 r19344 4 4 * @author nowelium 5 5 */ 6 abstract class Hermit { 7 public static $classMap = array(); 8 public static function bind($targetClass, $dao){ 9 self::$classMap[$targetClass] = $dao; 6 class Hermit { 7 protected $listeners = array(); 8 protected $delegaters = array(); 9 10 public function __construct($class){ 11 $this->proxy = self::__create($class); 10 12 } 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); 16 16 } 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){ 17 23 if(is_object($class)){ 18 return Hermit ClassProxy::delegate($pdo,new ReflectionObject($class), $class);24 return HermitObjectProxy::delegate(new ReflectionObject($class), $class); 19 25 } 20 26 if(isset(Hermit::$classMap[$class])){ 21 return self:: createProxy($pdo,Hermit::$classMap[$class]);27 return self::__createProxy(Hermit::$classMap[$class]); 22 28 } 23 29 if(class_exists($class)){ 24 return self:: create($pdo,$class);30 return self::__createProxy($class); 25 31 } 26 throw new InvalidArgumentException('nosuch class: ' . $class);32 throw new RuntimeException('Hermit does not create: ' . $class); 27 33 } 28 protected static function createProxy(PDO $pdo,$targetClass){34 protected static function __createProxy($targetClass){ 29 35 $reflector = new ReflectionClass($targetClass); 30 36 if($reflector->isInterface()){ 31 return HermitInterfaceProxy::delegate($ pdo, $reflector);37 return HermitInterfaceProxy::delegate($reflector); 32 38 } 33 return Hermit FutureProxy::delegate($pdo, $reflector, $targetClass);39 return HermitClassProxy::delegate($reflector); 34 40 } 35 41 } 42
![(please configure the [header_logo] section in trac.ini)](/share/chrome/site/your_project_logo.png)