- Timestamp:
- 09/21/08 22:52:04 (2 months ago)
- Location:
- lang/php/misc/Hermit
- Files:
-
- 7 added
- 16 modified
- 1 moved
-
example/employee/hoge.php (modified) (1 diff)
-
example/hoge.php (moved) (moved from lang/php/misc/Hermit/src/Hermit/hoge.php)
-
src/Hermit/Hermit.php (modified) (2 diffs)
-
src/Hermit/HermitDaoManager.php (modified) (2 diffs)
-
src/Hermit/HermitDataSourceManager.php (modified) (1 diff)
-
src/Hermit/command/HermitDeleteCommand.php (modified) (1 diff)
-
src/Hermit/command/HermitInsertCommand.php (modified) (1 diff)
-
src/Hermit/command/HermitSelectCommand.php (modified) (1 diff)
-
src/Hermit/command/HermitSqlCommand.php (modified) (1 diff)
-
src/Hermit/command/HermitSqlCommandFactory.php (modified) (3 diffs)
-
src/Hermit/command/HermitUpdateCommand.php (modified) (1 diff)
-
src/Hermit/creator/HermitAppendableSqlCreator.php (added)
-
src/Hermit/creator/HermitAutoDeleteSqlCreator.php (added)
-
src/Hermit/creator/HermitAutoInsertSqlCreator.php (modified) (1 diff)
-
src/Hermit/creator/HermitAutoSelectSqlCreator.php (modified) (1 diff)
-
src/Hermit/creator/HermitAutoUpdateSqlCreator.php (modified) (1 diff)
-
src/Hermit/creator/HermitSqlCreator.php (modified) (1 diff)
-
src/Hermit/creator/HermitStaticSqlCreator.php (modified) (1 diff)
-
src/Hermit/meta/HermitDatabaseMeta.php (added)
-
src/Hermit/meta/HermitDatabaseMetaFactory.php (added)
-
src/Hermit/meta/HermitMySQLDatabaseMeta.php (added)
-
src/Hermit/meta/HermitSqliteDatabaseMeta.php (added)
-
src/Hermit/meta/HermitTableInfo.php (added)
-
src/Hermit/proxy/HermitFutureProxy.php (modified) (1 diff)
Legend:
- Unmodified
- Added
- Removed
-
lang/php/misc/Hermit/example/employee/hoge.php
r19017 r19682 6 6 7 7 class 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'); 10 11 //$result = $dao->getAllEmployeeList(); 11 //$result = $dao->getEmployeeByEmpNo(7698); 12 $result = $dao->getEmployeeByEmpNo(7698); 13 /* 12 14 $emp = new Employee; 13 15 $emp->empno = 7566; 14 16 $emp->ename = 'JONES'; 15 17 $result = $dao->getEmployee($emp); 16 var_dump($result); 18 */ 19 return $result; 17 20 } 18 21 } 22 $pdo = new PDO('sqlite:' . dirname(__FILE__) . '/resource/employee.db'); 23 $pdo->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION); 19 24 20 Hermit::bind('Hoge', 'EmployeeDao'); 21 $pdo = new PDO('sqlite:' . dirname(__FILE__) . '/resource/employee.db'); 25 HermitDataSourceManager::set('EmployeeDao', $pdo); 22 26 $hoge = new Hoge; 23 $hoge->execute($pdo); 27 $result = $hoge->execute(); 28 var_dump($result); -
lang/php/misc/Hermit/src/Hermit/Hermit.php
r19426 r19682 7 7 protected $listeners = array(); 8 8 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 } 10 15 $this->proxy = self::__create($class); 11 16 } … … 16 21 return self::__request($this->proxy, $name, $parameters); 17 22 } 18 protected static function __request(Hermit $hermit, $name, array $params){23 protected static function __request(HermitProxy $hermit, $name, array $params){ 19 24 return $hermit->request($name, $params); 20 25 } 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); 24 29 } 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){34 30 $reflector = new ReflectionClass($targetClass); 35 31 if($reflector->isInterface()){ -
lang/php/misc/Hermit/src/Hermit/HermitDaoManager.php
r19344 r19682 1 1 <?php 2 2 3 abstract class H armitDaoManager {3 abstract class HermitDaoManager { 4 4 private static $daoClasses = array(); 5 5 private function __construct(){ … … 10 10 } 11 11 public static function get($targetClass){ 12 return self::$daoClasses[$targetClass] );12 return self::$daoClasses[$targetClass]; 13 13 } 14 14 public static function has($targetClass){ -
lang/php/misc/Hermit/src/Hermit/HermitDataSourceManager.php
r19344 r19682 13 13 } 14 14 public static function get($targetClass){ 15 if(!self::has($targetClass)){ 16 return self::$default; 17 } 15 18 return self::$datasources[$targetClass]; 16 19 } -
lang/php/misc/Hermit/src/Hermit/command/HermitDeleteCommand.php
r19426 r19682 1 1 <?php 2 2 3 class HermitDeleteCommand implements Hermit Command {3 class HermitDeleteCommand implements HermitSqlCommand { 4 4 public function execute(PDO $pdo, array $params){ 5 5 } -
lang/php/misc/Hermit/src/Hermit/command/HermitInsertCommand.php
r19426 r19682 1 1 <?php 2 2 3 class HermitInsertCommand implements Hermit Command {3 class HermitInsertCommand implements HermitSqlCommand { 4 4 public function execute(PDO $pdo, array $parameters){ 5 5 } -
lang/php/misc/Hermit/src/Hermit/command/HermitSelectCommand.php
r19426 r19682 4 4 * @author nowelium 5 5 */ 6 class HermitSelectCommand implements Hermit Command {6 class HermitSelectCommand implements HermitSqlCommand { 7 7 private $method; 8 8 private $sqlCreator; -
lang/php/misc/Hermit/src/Hermit/command/HermitSqlCommand.php
r19426 r19682 1 1 <?php 2 2 3 /** 4 * @author nowelium 5 */ 3 6 interface HermitSqlCommand { 4 7 public function execute(PDO $pdo, array $params); -
lang/php/misc/Hermit/src/Hermit/command/HermitSqlCommandFactory.php
r19426 r19682 5 5 */ 6 6 class HermitSqlCommandFactory { 7 7 8 protected $annote; 8 9 protected $reflector; 9 10 protected $createdCommands = array(); 11 10 12 public function __construct(ReflectionClass $reflector){ 11 13 $this->annote = HermitAnnote::create($reflector); … … 21 23 return $this->createdCommands[$methodId]; 22 24 } 23 $command = $this->createCommand($ method);25 $command = $this->createCommand($pdo, $method); 24 26 return $this->createdCommands[$methodId] = $command; 25 27 } 26 protected function createCommand( ReflectionMethod $method){28 protected function createCommand(PDO $pdo, ReflectionMethod $method){ 27 29 $methodName = $method->getName(); 28 if($this->annote->isProcedureMethod($method Name)){29 return $this->createProcedureCommand($ method);30 if($this->annote->isProcedureMethod($method)){ 31 return $this->createProcedureCommand($pdo, $method); 30 32 } 31 if($this->annote->isInsertMethod($method Name)){32 return $this->createInsertCommand($ method);33 if($this->annote->isInsertMethod($method)){ 34 return $this->createInsertCommand($pdo, $method); 33 35 } 34 if($this->annote->isUpdateMethod($method Name)){35 return $this->createUpdateCommand($ method);36 if($this->annote->isUpdateMethod($method)){ 37 return $this->createUpdateCommand($pdo, $method); 36 38 } 37 if($this->annote->isDeleteMethod($method Name)){38 return $this->createDeleteCommand($ method);39 if($this->annote->isDeleteMethod($method)){ 40 return $this->createDeleteCommand($pdo, $method); 39 41 } 40 return $this->createSelectCommand($ method);42 return $this->createSelectCommand($pdo, $method); 41 43 } 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); 44 48 return new HermitProcedureCommand($method, $creator); 45 49 } 46 protected function createProcedureSqlCreator(ReflectionMethod $method ){50 protected function createProcedureSqlCreator(ReflectionMethod $method, $dbName){ 47 51 $sql = $this->annote->getProcedure($method); 48 52 if(null !== $sql){ 49 53 return new HermitStaticSqlCreator($sql); 50 54 } 51 $sql = $this->annote->getSql($method );55 $sql = $this->annote->getSql($method, $dbName); 52 56 if(null !== $sql){ 53 57 return new HermitStaticSqlCreator($sql); … … 68 72 throw new RuntimeException('T.B.D'); 69 73 } 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){ 72 95 $query = $this->annote->getQuery($method); 73 96 if(null !== $query){ 74 97 $creator->addQuery($query); 75 98 } 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;88 99 } 89 100 } -
lang/php/misc/Hermit/src/Hermit/command/HermitUpdateCommand.php
r19426 r19682 1 1 <?php 2 2 3 class HermitUpdateCommand implements Hermit Command {3 class HermitUpdateCommand implements HermitSqlCommand { 4 4 public function execute(PDO $pdo, array $params){ 5 5 } -
lang/php/misc/Hermit/src/Hermit/creator/HermitAutoInsertSqlCreator.php
r19017 r19682 5 5 */ 6 6 class HermitAutoInsertSqlCreator implements HermitSqlCreator { 7 public function initialize(PDO $pdo, ReflectionMethod $method, HermitAnnote $annote){ 8 } 7 9 public function createSql(){ 8 10 } -
lang/php/misc/Hermit/src/Hermit/creator/HermitAutoSelectSqlCreator.php
r19017 r19682 4 4 * @author nowelium 5 5 */ 6 class HermitAutoSelectSqlCreator implements HermitSqlCreator { 6 class 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 } 7 24 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; 8 46 } 9 47 } -
lang/php/misc/Hermit/src/Hermit/creator/HermitAutoUpdateSqlCreator.php
r19017 r19682 5 5 */ 6 6 class HermitAutoUpdateSqlCreator implements HermitSqlCreator { 7 public function initialize(PDO $pdo, ReflectionMethod $method, HermitAnnote $annote){ 8 } 7 9 public function createSql(){ 8 10 } -
lang/php/misc/Hermit/src/Hermit/creator/HermitSqlCreator.php
r19426 r19682 5 5 */ 6 6 interface HermitSqlCreator { 7 public function createSql(PDO $pdo); 7 public function initialize(PDO $pdo, ReflectionMethod $method, HermitAnnote $annote); 8 public function createSql(); 8 9 } -
lang/php/misc/Hermit/src/Hermit/creator/HermitStaticSqlCreator.php
r19426 r19682 1 1 <?php 2 2 3 /** 4 * @author nowelium 5 */ 3 6 class HermitStaticSqlCreator implements HermitSqlCreator { 4 7 private $sql; 5 public function __construc t($sql){8 public function __construcy($sql){ 6 9 $this->sql = $sql; 10 } 11 public function initialize(PDO $pdo, ReflectionMethod $method, HermitAnnote $annote){ 7 12 } 8 13 public function createSql(PDO $pdo){ -
lang/php/misc/Hermit/src/Hermit/proxy/HermitFutureProxy.php
r19344 r19682 5 5 */ 6 6 interface HermitFutureProxy extends HermitProxy { 7 public static function delegate( PDO $pdo,ReflectionClass $reflector, $instance = null);7 public static function delegate(ReflectionClass $reflector, $instance = null); 8 8 }
![(please configure the [header_logo] section in trac.ini)](/share/chrome/site/your_project_logo.png)