- Timestamp:
- 10/01/08 21:02:13 (2 months ago)
- Location:
- lang/php/misc/Hermit
- Files:
-
- 6 added
- 16 modified
-
example/employee/hoge.php (modified) (2 diffs)
-
src/Hermit/HermitParam.php (added)
-
src/Hermit/annote/HermitAnnoteConst.php (modified) (1 diff)
-
src/Hermit/command/HermitProcedureCommand.php (modified) (1 diff)
-
src/Hermit/command/HermitSelectCommand.php (modified) (1 diff)
-
src/Hermit/command/HermitSqlCommandFactory.php (modified) (3 diffs)
-
src/Hermit/creator/HermitProcedureCallSqlCreator.php (added)
-
src/Hermit/meta/HermitDatabaseMetaFactory.php (modified) (1 diff)
-
src/Hermit/parameter/HermitProcedureParameter.php (added)
-
src/Hermit/parameter/HermitSqlParameter.php (modified) (1 diff)
-
src/Hermit/resultset/HermitDefaultResultSet.php (modified) (1 diff)
-
src/Hermit/resultset/HermitListResultSet.php (modified) (1 diff)
-
src/Hermit/resultset/HermitParameterBind.php (added)
-
src/Hermit/resultset/HermitProcedureResultSet.php (modified) (1 diff)
-
src/Hermit/resultset/HermitResultSet.php (modified) (1 diff)
-
src/Hermit/statement/HermitProcedureStatementBuilder.php (added)
-
src/Hermit/statement/HermitStatement.php (modified) (1 diff)
-
src/Hermit/statement/HermitStatementBuilder.php (modified) (1 diff)
-
test/HermtProcedure_mysqlTest.php (added)
-
test/db_init.php (modified) (1 diff)
-
test/resource/procedure-mysql.sql.php (modified) (9 diffs)
-
test/resource/test-mysql.sql.php (modified) (20 diffs)
Legend:
- Unmodified
- Added
- Removed
-
lang/php/misc/Hermit/example/employee/hoge.php
r20325 r20387 9 9 public function __construct(){ 10 10 //HermitDaoManager::set(__CLASS__, 'EmployeeDao'); 11 <<<<<<< .mine12 $dao = new Hermit('EmployeeDao');13 //$result = $dao->getAllEmployeeList();14 //$result = $dao->getEmployeeByEmpNo(7698);15 /*16 =======17 11 $this->dao = new Hermit('EmployeeDao'); 18 12 } … … 24 18 } 25 19 public function getEmp(){ 26 >>>>>>> .r2031927 20 $emp = new Employee; 28 21 $emp->empno = 7566; 29 22 $emp->ename = 'JONES'; 30 <<<<<<< .mine31 $result = $dao->getEmployee($emp);32 */33 $result = $dao->getEmployeeAndDepartment();34 return $result;35 =======36 23 return $this->dao->getEmployee($emp); 37 >>>>>>> .r2031938 24 } 39 25 } -
lang/php/misc/Hermit/src/Hermit/annote/HermitAnnoteConst.php
r20200 r20387 67 67 } 68 68 public function getProcedure(ReflectionMethod $method){ 69 $key = $method->getName . self::PROCEDURE_SUFFIX;69 $key = $method->getName() . self::PROCEDURE_SUFFIX; 70 70 if($this->reflector->hasConstant($key)){ 71 71 return $this->reflector->getConstant($key); -
lang/php/misc/Hermit/src/Hermit/command/HermitProcedureCommand.php
r20325 r20387 8 8 private $sqlCreator; 9 9 private $type; 10 public function __construct(ReflectionMethod $method, HermitSqlCreator $sqlCreator, HermitValueType $type){ 10 private $annote; 11 public function setMethod(ReflectionMethod $method){ 11 12 $this->method = $method; 13 } 14 public function setSqlCreator(HermitSqlCreator $sqlCreator){ 12 15 $this->sqlCreator = $sqlCreator; 16 } 17 public function setValueType(HermitValueType $type){ 13 18 $this->type = $type; 19 } 20 public function setAnnote(HermitAnnote $annote){ 21 $this->annote = $annote; 14 22 } 15 23 16 24 public function execute(PDO $pdo, array $parameters){ 17 $ sql = $this->sqlCreator->createSql($pdo);18 $stmt = HermitStatementBuilder::prepare($pdo, $this->method, $sql);25 $builder = new HermitProcedureStatementBuilder($this->method, $this->annote, $this->sqlCreator); 26 $stmt = $builder->build($pdo); 19 27 $stmt->execute($parameters); 20 $rs = new HermitProcedureResultSet; 21 return $rs->execute($stmt, $this->type); 28 $rs = new HermitProcedureResultSet($stmt->getSqlParameter()); 29 $rs->bindParameter($pdo, $parameters); 30 return $rs->create($stmt, $this->type); 22 31 } 23 32 } -
lang/php/misc/Hermit/src/Hermit/command/HermitSelectCommand.php
r20200 r20387 14 14 } 15 15 public function execute(PDO $pdo, array $parameters){ 16 $ sql = $this->sqlCreator->createSql($pdo);17 $stmt = HermitStatementBuilder::prepare($pdo, $this->method, $sql);16 $builder = new HermitStatementBuilder($this->method, $this->sqlCreator); 17 $stmt = $builder->build($pdo); 18 18 $stmt->execute($parameters); 19 19 $resultset = HermitResultSetFactory::create($this->method); -
lang/php/misc/Hermit/src/Hermit/command/HermitSqlCommandFactory.php
r20325 r20387 42 42 } 43 43 protected function createProcedureCommand(PDO $pdo, ReflectionMethod $method){ 44 $db Name = HermitDatabaseMetaFactory::getDatabaseName($pdo);45 $creator = $this->createProcedureSqlCreator($method, $db Name);44 $dbms = HermitDatabaseMetaFactory::getDbms($pdo); 45 $creator = $this->createProcedureSqlCreator($method, $dbms); 46 46 $creator->initialize($pdo, $method, $this->annote); 47 47 $valueType = HermitValueTypeFactory::create($this->annote, $method); 48 return new HermitProcedureCommand($method, $creator, $valueType); 48 49 $command = new HermitProcedureCommand; 50 $command->setMethod($method); 51 $command->setSqlCreator($creator); 52 $command->setValueType($valueType); 53 $command->setAnnote($this->annote); 54 return $command; 49 55 } 50 56 protected function createProcedureSqlCreator(ReflectionMethod $method, $dbName){ 51 57 $sql = $this->annote->getProcedure($method); 52 58 if(null !== $sql){ 53 return new Hermit StaticSqlCreator($sql);59 return new HermitProcedureCallSqlCreator($sql); 54 60 } 55 61 $sql = $this->annote->getSql($method, $dbName); 56 62 if(null !== $sql){ 57 return new Hermit StaticSqlCreator($sql);63 return new HermitProcedureCallSqlCreator($sql); 58 64 } 59 65 $sql = $this->annote->getFile($method); 60 66 if(null !== $sql){ 61 return new Hermit StaticSqlCreator($sql);67 return new HermitProcedureCallSqlCreator($sql); 62 68 } 63 69 throw new BadMethodCallException('method: "' . $method->getName() . '" was not apply to Procedure command'); … … 73 79 } 74 80 protected function createSelectCommand(PDO $pdo, ReflectionMethod $method){ 75 $db Name = HermitDatabaseMetaFactory::getDatabaseName($pdo);76 $creator = $this->createSelectSqlCreator($method, $db Name);81 $dbms = HermitDatabaseMetaFactory::getDbms($pdo); 82 $creator = $this->createSelectSqlCreator($method, $dbms); 77 83 $creator->initialize($pdo, $method, $this->annote); 78 84 if($creator instanceof HermitAppendableSqlCreator){ … … 82 88 return new HermitSelectCommand($method, $creator, $valueType); 83 89 } 84 protected function createSelectSqlCreator(ReflectionMethod $method, $db Name){85 $sql = $this->annote->getSql($method, $db Name);90 protected function createSelectSqlCreator(ReflectionMethod $method, $dbms){ 91 $sql = $this->annote->getSql($method, $dbms); 86 92 if(null !== $sql){ 87 93 return new HermitStaticSqlCreator($sql); 88 94 } 89 $sql = $this->annote->getFile($method, $db Name);95 $sql = $this->annote->getFile($method, $dbms); 90 96 if(null !== $sql){ 91 97 return new HermitStaticSqlCreator($sql); -
lang/php/misc/Hermit/src/Hermit/meta/HermitDatabaseMetaFactory.php
r19682 r20387 13 13 // nop 14 14 } 15 public static function getD atabaseName(PDO $pdo){15 public static function getDbms(PDO $pdo){ 16 16 return $pdo->getAttribute(PDO::ATTR_DRIVER_NAME); 17 17 } 18 18 public static function get(PDO $pdo){ 19 $driver = self::getD atabaseName($pdo);19 $driver = self::getDbms($pdo); 20 20 if(!isset(self::$dbms[$driver])){ 21 21 throw new RuntimeException('unsupported driver: ' . $driver); -
lang/php/misc/Hermit/src/Hermit/parameter/HermitSqlParameter.php
r18954 r20387 6 6 abstract class HermitSqlParameter { 7 7 public function match($matches){ 8 if(count($matches) < 4){ 9 throw new RuntimeException('sql comment was fail: ' . join(',', $matches)); 10 } 8 11 return $this->replace($matches[1], $matches[2], $matches[3]); 9 12 } -
lang/php/misc/Hermit/src/Hermit/resultset/HermitDefaultResultSet.php
r20200 r20387 5 5 */ 6 6 class HermitDefaultResultSet implements HermitResultSet { 7 public function execute(HermitStatement $stmt, HermitValueType $type){7 public function create(HermitStatement $stmt, HermitValueType $type){ 8 8 $type->apply($stmt); 9 9 return $stmt->fetch(); -
lang/php/misc/Hermit/src/Hermit/resultset/HermitListResultSet.php
r20200 r20387 6 6 */ 7 7 class HermitListResultSet implements HermitResultSet { 8 public function execute(HermitStatement $stmt, HermitValueType $type){8 public function create(HermitStatement $stmt, HermitValueType $type){ 9 9 $type->apply($stmt); 10 10 11 11 $results = array(); 12 while($ obj= $stmt->fetch()){13 $results[] = $ obj;12 while($row = $stmt->fetch()){ 13 $results[] = $row; 14 14 } 15 15 return $results; -
lang/php/misc/Hermit/src/Hermit/resultset/HermitProcedureResultSet.php
r20200 r20387 4 4 * @author nowelium 5 5 */ 6 class HermitProcedureResultSet { 6 class HermitProcedureResultSet implements HermitResultSet, HermitParameterBind { 7 private $procParameter; 8 public function __construct(HermitProcedureParameter $procParameter){ 9 $this->procParameter = $procParameter; 10 } 11 public function create(HermitStatement $stmt, HermitValueType $type){ 12 $type->apply($stmt); 13 14 if($stmt->columnCount() < 1){ 15 return null; 16 } 17 18 $results = array(); 19 do { 20 $row = $stmt->fetch(); 21 if(false === $row){ 22 break; 23 } 24 $results[] = $row; 25 } while($stmt->nextRowset()); 26 return $results; 27 } 28 public function bindParameter(PDO $pdo, array $parameter){ 29 $param = $parameter[0]; 30 $dbms = HermitDatabaseMetaFactory::getDbms($pdo); 31 if('mysql' === $dbms){ 32 if(!$this->procParameter->hasBindParameters()){ 33 return; 34 } 35 $out = $this->procParameter->getOutParameters(); 36 foreach($out as $name){ 37 $stmt = $pdo->prepare('SELECT @' . $name); 38 $stmt->bindColumn(1, $param->$name); 39 $stmt->execute(); 40 41 $stmt->fetch(PDO::FETCH_BOUND); 42 $stmt->closeCursor(); 43 unset($stmt); 44 } 45 } 46 } 7 47 } -
lang/php/misc/Hermit/src/Hermit/resultset/HermitResultSet.php
r20200 r20387 5 5 */ 6 6 interface HermitResultSet { 7 public function execute(HermitStatement $stmt, HermitValueType $type);7 public function create(HermitStatement $stmt, HermitValueType $type); 8 8 } -
lang/php/misc/Hermit/src/Hermit/statement/HermitStatement.php
r19344 r20387 11 11 $this->statement = $statement; 12 12 } 13 public function getSqlParameter(){ 14 return $this->parameter; 15 } 13 16 public function execute($parameterValue = array()){ 14 17 $this->parameter->bind($this->statement, $parameterValue); 15 18 return $this->statement->execute(); 19 } 20 public function fetch(){ 21 $args = func_get_args(); 22 $c = count($args); 23 if($c < 1){ 24 return $this->statement->fetch(); 25 } 26 if($c < 2){ 27 return $this->statement->fetch($args[0]); 28 } 29 return call_user_func_array(array($this->statement, 'fetch'), $args); 16 30 } 17 31 public function __call($name, $params){ -
lang/php/misc/Hermit/src/Hermit/statement/HermitStatementBuilder.php
r19954 r20387 4 4 * @author nowelium 5 5 */ 6 abstractclass HermitStatementBuilder {6 class HermitStatementBuilder { 7 7 const REGEX = '/(\/\*([^\*\/]*)\*\/)(\w+|((\'|")([^(\'|")]*)(\'|")))?/m'; 8 public static function prepare(PDO $pdo, ReflectionMethod $method, $sql){ 9 $parameterType = self::createParameterType($method); 10 $sql = preg_replace_callback(self::REGEX, array($parameterType, 'match'), $sql); 11 return new HermitStatement($parameterType, $pdo->prepare($sql)); 8 private $method; 9 private $sqlCreator; 10 public function __construct(ReflectionMethod $method, HermitSqlCreator $sqlCreator){ 11 $this->method = $method; 12 $this->sqlCreator = $sqlCreator; 12 13 } 13 protected static function createParameterType(ReflectionMethod $method){ 14 $numOfParams = $method->getNumberOfParameters(); 14 public function build(PDO $pdo){ 15 $parameter = $this->createParameterType(); 16 $sql = $this->sqlCreator->createSql($pdo); 17 $sql = self::preparedSql($parameter, $sql); 18 return new HermitStatement($parameter, $pdo->prepare($sql)); 19 } 20 21 protected static function preparedSql(HermitSqlParameter $parameter, $sql){ 22 return preg_replace_callback(self::REGEX, array($parameter, 'match'), $sql); 23 } 24 25 protected function createParameterType(){ 26 $numOfParams = $this->method->getNumberOfParameters(); 15 27 if(0 === $numOfParams){ 16 28 return new HermitSqlParameterNull; -
lang/php/misc/Hermit/test/db_init.php
r20314 r20387 2 2 3 3 function db_init(PDO $pdo){ 4 $name = HermitDatabaseMetaFactory::getD atabaseName($pdo);4 $name = HermitDatabaseMetaFactory::getDbms($pdo); 5 5 $_db_init = 'db_' . $name . '_init'; 6 6 $_db_init($pdo); -
lang/php/misc/Hermit/test/resource/procedure-mysql.sql.php
r20325 r20387 54 54 $stmt = $pdo->query($sql); 55 55 $stmt->closeCursor(); 56 unset($stmt); 56 57 57 58 $sql = <<<__SQL__ … … 64 65 $stmt = $pdo->query($sql); 65 66 $stmt->closeCursor(); 67 unset($stmt); 68 66 69 67 70 $sql = <<<__SQL__ … … 75 78 $stmt = $pdo->query($sql); 76 79 $stmt->closeCursor(); 80 unset($stmt); 81 77 82 78 83 $sql = <<<__SQL__ … … 87 92 $stmt = $pdo->query($sql); 88 93 $stmt->closeCursor(); 94 unset($stmt); 95 89 96 90 97 $sql = <<<__SQL__ … … 98 105 $stmt = $pdo->query($sql); 99 106 $stmt->closeCursor(); 107 unset($stmt); 108 100 109 101 110 $sql = <<<__SQL__ … … 109 118 $stmt = $pdo->query($sql); 110 119 $stmt->closeCursor(); 120 unset($stmt); 121 111 122 112 123 $sql = <<<__SQL__ … … 119 130 $stmt = $pdo->query($sql); 120 131 $stmt->closeCursor(); 132 unset($stmt); 133 121 134 122 135 $sql = <<<__SQL__ … … 130 143 $stmt = $pdo->query($sql); 131 144 $stmt->closeCursor(); 145 unset($stmt); 146 132 147 133 148 $sql = <<<__SQL__ … … 142 157 $stmt = $pdo->query($sql); 143 158 $stmt->closeCursor(); 159 unset($stmt); 160 144 161 145 162 $pdo->commit(); -
lang/php/misc/Hermit/test/resource/test-mysql.sql.php
r20314 r20387 29 29 $stmt = $pdo->query($sql); 30 30 $stmt->closeCursor(); 31 unset($stmt); 32 31 33 32 34 $sql = <<<__SQL__ … … 35 37 $stmt = $pdo->query($sql); 36 38 $stmt->closeCursor(); 39 unset($stmt); 40 37 41 $sql = <<<__SQL__ 38 42 INSERT INTO EMP VALUES(7499,'ALLEN','SALESMAN',7698,'1981-02-20',1600,300,30,'2000-01-01 00:00:00.0'); … … 40 44 $stmt = $pdo->query($sql); 41 45 $stmt->closeCursor(); 46 unset($stmt); 47 42 48 $sql = <<<__SQL__ 43 49 INSERT INTO EMP VALUES(7521,'WARD','SALESMAN',7698,'1981-02-22',1250,500,30,'2000-01-01 00:00:00.0'); … … 45 51 $stmt = $pdo->query($sql); 46 52 $stmt->closeCursor(); 53 unset($stmt); 54 47 55 $sql = <<<__SQL__ 48 56 INSERT INTO EMP VALUES(7566,'JONES','MANAGER',7839,'1981-04-02',2975,NULL,20,'2000-01-01 00:00:00.0'); … … 50 58 $stmt = $pdo->query($sql); 51 59 $stmt->closeCursor(); 60 unset($stmt); 61 52 62 $sql = <<<__SQL__ 53 63 INSERT INTO EMP VALUES(7654,'MARTIN','SALESMAN',7698,'1981-09-28',1250,1400,30,'2000-01-01 00:00:00.0'); … … 55 65 $stmt = $pdo->query($sql); 56 66 $stmt->closeCursor(); 67 unset($stmt); 68 57 69 $sql = <<<__SQL__ 58 70 INSERT INTO EMP VALUES(7698,'BLAKE','MANAGER',7839,'1981-05-01',2850,NULL,30,'2000-01-01 00:00:00.0'); … … 60 72 $stmt = $pdo->query($sql); 61 73 $stmt->closeCursor(); 74 unset($stmt); 75 62 76 $sql = <<<__SQL__ 63 77 INSERT INTO EMP VALUES(7782,'CLARK','MANAGER',7839,'1981-06-09',2450,NULL,10,'2000-01-01 00:00:00.0'); … … 65 79 $stmt = $pdo->query($sql); 66 80 $stmt->closeCursor(); 81 unset($stmt); 82 67 83 $sql = <<<__SQL__ 68 84 INSERT INTO EMP VALUES(7788,'SCOTT','ANALYST',7566,'1982-12-09',3000.0,NULL,20,'2005-01-18 13:09:32.213'); … … 70 86 $stmt = $pdo->query($sql); 71 87 $stmt->closeCursor(); 88 unset($stmt); 89 72 90 $sql = <<<__SQL__ 73 91 INSERT INTO EMP VALUES(7839,'KING','PRESIDENT',NULL,'1981-11-17',5000,NULL,10,'2000-01-01 00:00:00.0'); … … 75 93 $stmt = $pdo->query($sql); 76 94 $stmt->closeCursor(); 95 unset($stmt); 96 77 97 $sql = <<<__SQL__ 78 98 INSERT INTO EMP VALUES(7844,'TURNER','SALESMAN',7698,'1981-09-08',1500,0,30,'2000-01-01 00:00:00.0'); … … 80 100 $stmt = $pdo->query($sql); 81 101 $stmt->closeCursor(); 102 unset($stmt); 103 82 104 $sql = <<<__SQL__ 83 105 INSERT INTO EMP VALUES(7876,'ADAMS','CLERK',7788,'1983-01-12',1100,NULL,20,'2000-01-01 00:00:00.0'); … … 85 107 $stmt = $pdo->query($sql); 86 108 $stmt->closeCursor(); 109 unset($stmt); 110 87 111 $sql = <<<__SQL__ 88 112 INSERT INTO EMP VALUES(7900,'JAMES','CLERK',7698,'1981-12-03',950,NULL,30,'2000-01-01 00:00:00.0'); … … 90 114 $stmt = $pdo->query($sql); 91 115 $stmt->closeCursor(); 116 unset($stmt); 117 92 118 $sql = <<<__SQL__ 93 119 INSERT INTO EMP VALUES(7902,'FORD','ANALYST',7566,'1981-12-03',3000,NULL,20,'2000-01-01 00:00:00.0'); … … 95 121 $stmt = $pdo->query($sql); 96 122 $stmt->closeCursor(); 123 unset($stmt); 124 97 125 $sql = <<<__SQL__ 98 126 INSERT INTO EMP VALUES(7934,'MILLER','CLERK',7782,'1982-01-23',1300,NULL,10,'2000-01-01 00:00:00.0'); … … 100 128 $stmt = $pdo->query($sql); 101 129 $stmt->closeCursor(); 130 unset($stmt); 131 102 132 103 133 $sql = <<<__SQL__ … … 112 142 $stmt = $pdo->query($sql); 113 143 $stmt->closeCursor(); 144 unset($stmt); 145 114 146 115 147 $sql = <<<__SQL__ … … 118 150 $stmt = $pdo->query($sql); 119 151 $stmt->closeCursor(); 152 unset($stmt); 153 120 154 $sql = <<<__SQL__ 121 155 INSERT INTO DEPT VALUES (20, 'RESEARCH', 'DALLAS', 0, 1); … … 123 157 $stmt = $pdo->query($sql); 124 158 $stmt->closeCursor(); 159 unset($stmt); 160 125 161 $sql = <<<__SQL__ 126 162 INSERT INTO DEPT VALUES (30, 'SALES', 'CHICAGO', 0, 1); … … 128 164 $stmt = $pdo->query($sql); 129 165 $stmt->closeCursor(); 166 unset($stmt); 167 130 168 $sql = <<<__SQL__ 131 169 INSERT INTO DEPT VALUES (40, 'OPERATIONS', 'BOSTON', 0, 1); … … 133 171 $stmt = $pdo->query($sql); 134 172 $stmt->closeCursor(); 173 unset($stmt); 174 135 175 136 176 $pdo->commit();
![(please configure the [header_logo] section in trac.ini)](/share/chrome/site/your_project_logo.png)