Changeset 19682 for lang/php

Show
Ignore:
Timestamp:
09/21/08 22:52:04 (2 months ago)
Author:
nowelium
Message:
 
Location:
lang/php/misc/Hermit
Files:
7 added
16 modified
1 moved

Legend:

Unmodified
Added
Removed
  • lang/php/misc/Hermit/example/employee/hoge.php

    r19017 r19682  
    66 
    77class Hoge { 
    8     public function execute($pdo){ 
    9         $dao = Hermit::create($pdo); 
     8    public function execute(){ 
     9        //HermitDaoManager::set(__CLASS__, 'EmployeeDao'); 
     10        $dao = new Hermit('EmployeeDao'); 
    1011        //$result = $dao->getAllEmployeeList(); 
    11         //$result = $dao->getEmployeeByEmpNo(7698); 
     12        $result = $dao->getEmployeeByEmpNo(7698); 
     13        /* 
    1214        $emp = new Employee; 
    1315        $emp->empno = 7566; 
    1416        $emp->ename = 'JONES'; 
    1517        $result = $dao->getEmployee($emp); 
    16         var_dump($result); 
     18        */ 
     19        return $result; 
    1720    } 
    1821} 
     22$pdo = new PDO('sqlite:' . dirname(__FILE__) . '/resource/employee.db'); 
     23$pdo->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION); 
    1924 
    20 Hermit::bind('Hoge', 'EmployeeDao'); 
    21 $pdo = new PDO('sqlite:' . dirname(__FILE__) . '/resource/employee.db'); 
     25HermitDataSourceManager::set('EmployeeDao', $pdo); 
    2226$hoge = new Hoge; 
    23 $hoge->execute($pdo); 
     27$result = $hoge->execute(); 
     28var_dump($result); 
  • lang/php/misc/Hermit/src/Hermit/Hermit.php

    r19426 r19682  
    77    protected $listeners = array(); 
    88    protected $delegaters = array(); 
    9     public function __construct($class){ 
     9    public function __construct($class = null){ 
     10        if(is_null($class)){ 
     11            $e = new Exception; 
     12            $trace = $e->getTrace(); 
     13            $class = HermitDaoManager::get($trace[1]['class']); 
     14        } 
    1015        $this->proxy = self::__create($class); 
    1116    } 
     
    1621        return self::__request($this->proxy, $name, $parameters); 
    1722    } 
    18     protected static function __request(Hermit $hermit, $name, array $params){ 
     23    protected static function __request(HermitProxy $hermit, $name, array $params){ 
    1924        return $hermit->request($name, $params); 
    2025    } 
    21     protected static function __create($class){ 
    22         if(is_object($class)){ 
    23             return HermitObjectProxy::delegate(new ReflectionObject($class), $class); 
     26    protected static function __create($targetClass){ 
     27        if(is_object($targetClass)){ 
     28            return HermitObjectProxy::delegate(new ReflectionObject($targetClas), $targetClass); 
    2429        } 
    25         if(isset(Hermit::$classMap[$class])){ 
    26             return self::__createProxy(Hermit::$classMap[$class]); 
    27         } 
    28         if(class_exists($class)){ 
    29             return self::__createProxy($class); 
    30         } 
    31         throw new RuntimeException('Hermit does not create: ' . $class); 
    32     } 
    33     protected static function __createProxy($targetClass){ 
    3430        $reflector = new ReflectionClass($targetClass); 
    3531        if($reflector->isInterface()){ 
  • lang/php/misc/Hermit/src/Hermit/HermitDaoManager.php

    r19344 r19682  
    11<?php 
    22 
    3 abstract class HarmitDaoManager { 
     3abstract class HermitDaoManager { 
    44    private static $daoClasses = array(); 
    55    private function __construct(){ 
     
    1010    } 
    1111    public static function get($targetClass){ 
    12         return self::$daoClasses[$targetClass]); 
     12        return self::$daoClasses[$targetClass]; 
    1313    } 
    1414    public static function has($targetClass){ 
  • lang/php/misc/Hermit/src/Hermit/HermitDataSourceManager.php

    r19344 r19682  
    1313    } 
    1414    public static function get($targetClass){ 
     15        if(!self::has($targetClass)){ 
     16            return self::$default; 
     17        } 
    1518        return self::$datasources[$targetClass]; 
    1619    } 
  • lang/php/misc/Hermit/src/Hermit/command/HermitDeleteCommand.php

    r19426 r19682  
    11<?php 
    22 
    3 class HermitDeleteCommand implements HermitCommand { 
     3class HermitDeleteCommand implements HermitSqlCommand { 
    44    public function execute(PDO $pdo, array $params){ 
    55    } 
  • lang/php/misc/Hermit/src/Hermit/command/HermitInsertCommand.php

    r19426 r19682  
    11<?php 
    22 
    3 class HermitInsertCommand implements HermitCommand { 
     3class HermitInsertCommand implements HermitSqlCommand { 
    44  public function execute(PDO $pdo, array $parameters){ 
    55  } 
  • lang/php/misc/Hermit/src/Hermit/command/HermitSelectCommand.php

    r19426 r19682  
    44 * @author nowelium 
    55 */ 
    6 class HermitSelectCommand implements HermitCommand { 
     6class HermitSelectCommand implements HermitSqlCommand { 
    77    private $method; 
    88    private $sqlCreator; 
  • lang/php/misc/Hermit/src/Hermit/command/HermitSqlCommand.php

    r19426 r19682  
    11<?php 
    22 
     3/** 
     4 * @author nowelium 
     5 */ 
    36interface HermitSqlCommand { 
    47    public function execute(PDO $pdo, array $params); 
  • lang/php/misc/Hermit/src/Hermit/command/HermitSqlCommandFactory.php

    r19426 r19682  
    55 */ 
    66class HermitSqlCommandFactory { 
     7 
    78    protected $annote; 
    89    protected $reflector; 
    910    protected $createdCommands = array(); 
     11 
    1012    public function __construct(ReflectionClass $reflector){ 
    1113        $this->annote = HermitAnnote::create($reflector); 
     
    2123            return $this->createdCommands[$methodId]; 
    2224        } 
    23         $command = $this->createCommand($method); 
     25        $command = $this->createCommand($pdo, $method); 
    2426        return $this->createdCommands[$methodId] = $command; 
    2527    } 
    26     protected function createCommand(ReflectionMethod $method){ 
     28    protected function createCommand(PDO $pdo, ReflectionMethod $method){ 
    2729        $methodName = $method->getName(); 
    28         if($this->annote->isProcedureMethod($methodName)){ 
    29             return $this->createProcedureCommand($method); 
     30        if($this->annote->isProcedureMethod($method)){ 
     31            return $this->createProcedureCommand($pdo, $method); 
    3032        } 
    31         if($this->annote->isInsertMethod($methodName)){ 
    32             return $this->createInsertCommand($method); 
     33        if($this->annote->isInsertMethod($method)){ 
     34            return $this->createInsertCommand($pdo, $method); 
    3335        } 
    34         if($this->annote->isUpdateMethod($methodName)){ 
    35             return $this->createUpdateCommand($method); 
     36        if($this->annote->isUpdateMethod($method)){ 
     37            return $this->createUpdateCommand($pdo, $method); 
    3638        } 
    37         if($this->annote->isDeleteMethod($methodName)){ 
    38             return $this->createDeleteCommand($method); 
     39        if($this->annote->isDeleteMethod($method)){ 
     40            return $this->createDeleteCommand($pdo, $method); 
    3941        } 
    40         return $this->createSelectCommand($method); 
     42        return $this->createSelectCommand($pdo, $method); 
    4143    } 
    42     protected function createProcedureCommand(ReflectionMethod $method){ 
    43         $creator = $this->createProcedureSqlCreator($method); 
     44    protected function createProcedureCommand(PDO $pdo, ReflectionMethod $method){ 
     45        $dbName = HermitDatabaseMetaFactory::getDatabaseName($pdo); 
     46        $creator = $this->createProcedureSqlCreator($method, $dbName); 
     47        $creator->initialize($pdo, $method, $this->annote); 
    4448        return new HermitProcedureCommand($method, $creator); 
    4549    } 
    46     protected function createProcedureSqlCreator(ReflectionMethod $method){ 
     50    protected function createProcedureSqlCreator(ReflectionMethod $method, $dbName){ 
    4751        $sql = $this->annote->getProcedure($method); 
    4852        if(null !== $sql){ 
    4953            return new HermitStaticSqlCreator($sql); 
    5054        } 
    51         $sql = $this->annote->getSql($method); 
     55        $sql = $this->annote->getSql($method, $dbName); 
    5256        if(null !== $sql){ 
    5357            return new HermitStaticSqlCreator($sql); 
     
    6872        throw new RuntimeException('T.B.D'); 
    6973    } 
    70     protected function createSelectCommand(ReflectionMethod $method){ 
    71         $creator = $this->createSelectSqlCreator($method); 
     74    protected function createSelectCommand(PDO $pdo, ReflectionMethod $method){ 
     75        $dbName = HermitDatabaseMetaFactory::getDatabaseName($pdo); 
     76        $creator = $this->createSelectSqlCreator($method, $dbName); 
     77        $creator->initialize($pdo, $method, $this->annote); 
     78        if($creator instanceof HermitAppendableSqlCreator){ 
     79            $this->appendSql($method, $creator); 
     80        } 
     81        return new HermitSelectCommand($method, $creator); 
     82    } 
     83    protected function createSelectSqlCreator(ReflectionMethod $method, $dbName){ 
     84        $sql = $this->annote->getSql($method, $dbName); 
     85        if(null !== $sql){ 
     86            return new HermitStaticSqlCreator($sql); 
     87        } 
     88        $sql = $this->annote->getFile($method, $dbName); 
     89        if(null !== $sql){ 
     90            return new HermitStaticSqlCreator($sql); 
     91        } 
     92        return new HermitAutoSelectSqlCreator; 
     93    } 
     94    protected function appendSql(ReflectionMethod $method, HermitAppendableSqlCreator $creator){ 
    7295        $query = $this->annote->getQuery($method); 
    7396        if(null !== $query){ 
    7497            $creator->addQuery($query); 
    7598        } 
    76         return new HermitSelectCommand($method, $creator); 
    77     } 
    78     protected function createSelectSqlCreator(ReflectionMethod $method){ 
    79         $sql = $this->annote->getSql($method); 
    80         if(null !== $sql){ 
    81             return new HermitStaticSqlCreator($sql); 
    82         } 
    83         $sql = $this->annote->getFile($method); 
    84         if(null !== $sql){ 
    85             return new HermitStaticSqlCreator($sql); 
    86         } 
    87         return new HermitAutoSelectCreator; 
    8899    } 
    89100} 
  • lang/php/misc/Hermit/src/Hermit/command/HermitUpdateCommand.php

    r19426 r19682  
    11<?php 
    22 
    3 class HermitUpdateCommand implements HermitCommand { 
     3class HermitUpdateCommand implements HermitSqlCommand { 
    44    public function execute(PDO $pdo, array $params){ 
    55    } 
  • lang/php/misc/Hermit/src/Hermit/creator/HermitAutoInsertSqlCreator.php

    r19017 r19682  
    55 */ 
    66class HermitAutoInsertSqlCreator implements HermitSqlCreator { 
     7    public function initialize(PDO $pdo, ReflectionMethod $method, HermitAnnote $annote){ 
     8    } 
    79    public function createSql(){ 
    810    } 
  • lang/php/misc/Hermit/src/Hermit/creator/HermitAutoSelectSqlCreator.php

    r19017 r19682  
    44 * @author nowelium 
    55 */ 
    6 class HermitAutoSelectSqlCreator implements HermitSqlCreator { 
     6class HermitAutoSelectSqlCreator implements HermitSqlCreator, HermitAppendableSqlCreator { 
     7    private $select; 
     8    private $query; 
     9    private $limit; 
     10    public function initialize(PDO $pdo, ReflectionMethod $method, HermitAnnote $annote){ 
     11        $meta = HermitDatabaseMetaFactory::get($pdo); 
     12        $table = $annote->getTable(); 
     13        $info = $meta->getTableInfo($table); 
     14        $columns = $info->getColumns(); 
     15        $select = 'SELECT'; 
     16        $select .= ' '; 
     17        $select .= join(', ', $columns); 
     18        $select .= ' '; 
     19        $select .= 'FROM'; 
     20        $select .= ' '; 
     21        $select .= $table; 
     22        $this->select = $select; 
     23    } 
    724    public function createSql(){ 
     25        $sql = ''; 
     26        $sql .= $this->select; 
     27        if(null !== $this->query){ 
     28            $sql .= ' '; 
     29            $sql .= 'WHERE'; 
     30            $sql .= ' '; 
     31            $sql .= $this->query; 
     32        } 
     33        if(null !== $this->limit){ 
     34            $sql .= ' '; 
     35            $sql .= 'LIMIT'; 
     36            $sql .= ' '; 
     37            $sql .= $this->limit; 
     38        } 
     39        return $sql; 
     40    } 
     41    public function addQuery($queryString){ 
     42        $this->query = $queryString; 
     43    } 
     44    public function addLimit($limit){ 
     45        $this->limit = $limit; 
    846    } 
    947} 
  • lang/php/misc/Hermit/src/Hermit/creator/HermitAutoUpdateSqlCreator.php

    r19017 r19682  
    55 */ 
    66class HermitAutoUpdateSqlCreator implements HermitSqlCreator { 
     7    public function initialize(PDO $pdo, ReflectionMethod $method, HermitAnnote $annote){ 
     8    } 
    79    public function createSql(){ 
    810    } 
  • lang/php/misc/Hermit/src/Hermit/creator/HermitSqlCreator.php

    r19426 r19682  
    55 */ 
    66interface HermitSqlCreator { 
    7     public function createSql(PDO $pdo); 
     7    public function initialize(PDO $pdo, ReflectionMethod $method, HermitAnnote $annote); 
     8    public function createSql(); 
    89} 
  • lang/php/misc/Hermit/src/Hermit/creator/HermitStaticSqlCreator.php

    r19426 r19682  
    11<?php 
    22 
     3/** 
     4 * @author nowelium 
     5 */ 
    36class HermitStaticSqlCreator implements HermitSqlCreator { 
    47    private $sql; 
    5     public function __construct($sql){ 
     8    public function __construcy($sql){ 
    69        $this->sql = $sql; 
     10    } 
     11    public function initialize(PDO $pdo, ReflectionMethod $method, HermitAnnote $annote){ 
    712    } 
    813    public function createSql(PDO $pdo){ 
  • lang/php/misc/Hermit/src/Hermit/proxy/HermitFutureProxy.php

    r19344 r19682  
    55 */ 
    66interface HermitFutureProxy extends HermitProxy { 
    7     public static function delegate(PDO $pdo, ReflectionClass $reflector, $instance = null); 
     7    public static function delegate(ReflectionClass $reflector, $instance = null); 
    88}