- Timestamp:
- 10/01/08 00:34:49 (2 months ago)
- Location:
- lang/php/misc/Hermit
- Files:
-
- 2 added
- 7 modified
-
example/employee/dao/EmployeeDao.php (modified) (2 diffs)
-
example/employee/dao/EmployeeDao_getEmployeeAndDepartment.sql (added)
-
example/employee/hoge.php (modified) (2 diffs)
-
src/Hermit/command/HermitProcedureCommand.php (added)
-
src/Hermit/command/HermitSqlCommandFactory.php (modified) (1 diff)
-
src/Hermit/meta/HermitProcedureInfo.php (modified) (2 diffs)
-
test/HermitProcedureInfo_mysqlTest.php (modified) (1 diff)
-
test/resource/procedure-mysql.sql (modified) (2 diffs)
-
test/resource/procedure-mysql.sql.php (modified) (2 diffs)
Legend:
- Unmodified
- Added
- Removed
-
lang/php/misc/Hermit/example/employee/dao/EmployeeDao.php
r18954 r20325 3 3 interface EmployeeDao { 4 4 const TABLE = 'EMP'; 5 5 6 const getAllEmployeeList_SQL = 'SELECT * FROM EMP'; 6 7 public function getAllEmployeeList(); … … 11 12 const getEmployeeByEmpNo_QUERY = 'EMPNO = /*empno*/"7369"'; 12 13 public function getEmployeeByEmpNo($empno); 14 15 16 const getEmployeeAndDepartment_VALUE_TYPE = 'ASSOC'; 17 public function getEmployeeAndDepartment(); 13 18 } -
lang/php/misc/Hermit/example/employee/hoge.php
r20266 r20325 9 9 public function __construct(){ 10 10 //HermitDaoManager::set(__CLASS__, 'EmployeeDao'); 11 <<<<<<< .mine 12 $dao = new Hermit('EmployeeDao'); 13 //$result = $dao->getAllEmployeeList(); 14 //$result = $dao->getEmployeeByEmpNo(7698); 15 /* 16 ======= 11 17 $this->dao = new Hermit('EmployeeDao'); 12 18 } … … 18 24 } 19 25 public function getEmp(){ 26 >>>>>>> .r20319 20 27 $emp = new Employee; 21 28 $emp->empno = 7566; 22 29 $emp->ename = 'JONES'; 30 <<<<<<< .mine 31 $result = $dao->getEmployee($emp); 32 */ 33 $result = $dao->getEmployeeAndDepartment(); 34 return $result; 35 ======= 23 36 return $this->dao->getEmployee($emp); 37 >>>>>>> .r20319 24 38 } 25 39 } -
lang/php/misc/Hermit/src/Hermit/command/HermitSqlCommandFactory.php
r20314 r20325 45 45 $creator = $this->createProcedureSqlCreator($method, $dbName); 46 46 $creator->initialize($pdo, $method, $this->annote); 47 return new HermitProcedureCommand($method, $creator); 47 $valueType = HermitValueTypeFactory::create($this->annote, $method); 48 return new HermitProcedureCommand($method, $creator, $valueType); 48 49 } 49 50 protected function createProcedureSqlCreator(ReflectionMethod $method, $dbName){ -
lang/php/misc/Hermit/src/Hermit/meta/HermitProcedureInfo.php
r20314 r20325 5 5 */ 6 6 class HermitProcedureInfo implements Serializable { 7 const IN_TYPE = 1; 8 const OUT_TYPE = 2; 9 const INOUT_TYPE = 3; 10 7 11 private $names = array(); 8 12 private $inout = array(); 9 13 private $types = array(); 10 14 11 const IN_TYPE = 1;12 const OUT_TYPE = 2;13 const INOUT_TYPE = 3;14 15 15 public function serialize(){ 16 $s = array(); 17 foreach($this as $property => $value){ 18 $s[$property] = $value; 19 } 20 return serialize($s); 16 21 } 17 22 public function unserialize($serialized){ 23 $unserialized = unserialize($serialized); 24 if(!is_array($unserialized)){ 25 throw new UnexpectedValueException('unserilized value: ' . $serialized); 26 } 27 foreach($unserialized as $property => $value){ 28 $this->$property = $value; 29 } 18 30 } 19 31 … … 33 45 $this->types[$name] = $type; 34 46 } 35 public function getParam sNames(){47 public function getParamNames(){ 36 48 return $this->names; 37 49 } 38 50 public function getInout($name){ 51 if(!array_key_exists($name, $this->inout)){ 52 throw new InvalidArgumentException('"' . $name . '" has not value in: ' . join(',', array_keys($this->inout))); 53 } 39 54 return $this->input[$name]; 40 55 } 41 56 public function getParamType($name){ 57 if(!array_key_exists($name, $this->inout)){ 58 throw new InvalidArgumentException('"' . $name . '" has not value in: ' . join(',', array_keys($this->inout))); 59 } 42 60 return $this->types[$name]; 43 61 } 44 62 public function typeofIn($name){ 63 if(!array_key_exists($name, $this->inout)){ 64 throw new InvalidArgumentException('"' . $name . '" has not value in: ' . join(',', array_keys($this->inout))); 65 } 45 66 return self::IN_TYPE === $this->inout[$name]; 46 67 } 47 68 public function typeofOut($name){ 69 if(!array_key_exists($name, $this->inout)){ 70 throw new InvalidArgumentException('"' . $name . '" has not value in: ' . join(',', array_keys($this->inout))); 71 } 48 72 return self::OUT_TYPE === $this->inout[$name]; 49 73 } 50 74 public function typeofInOut($name){ 75 if(!array_key_exists($name, $this->inout)){ 76 throw new InvalidArgumentException('"' . $name . '" has not value in: ' . join(',', array_keys($this->inout))); 77 } 51 78 return self::INOUT_TYPE === $this->inout[$name]; 52 79 } -
lang/php/misc/Hermit/test/HermitProcedureInfo_mysqlTest.php
r20314 r20325 10 10 11 11 $dbmeta = new HermitMySQLDatabaseMeta($pdo); 12 $procedureInfo = $dbmeta->getProcedureInfo('PROC_IN_OUT'); 12 { 13 $test->diag(basename(__FILE__) . '::parameter[in:out]'); 14 $procedureInfo = $dbmeta->getProcedureInfo('PROC_IN_OUT'); 13 15 14 $test->ok($procedureInfo !== null); 15 16 $test->ok($procedureInfo !== null); 17 $parameters = array_map('strtolower', $procedureInfo->getParamNames()); 18 $expect = array('sales', 'tax'); 19 $test->is(count(array_diff($parameters, $expect)), 0); 20 $test->is($procedureInfo->typeofIn('sales'), true); 21 $test->is($procedureInfo->typeofOut('sales'), false); 22 $test->is($procedureInfo->typeofInOut('sales'), false); 23 $test->is($procedureInfo->typeofIn('tax'), false); 24 $test->is($procedureInfo->typeofOut('tax'), true); 25 $test->is($procedureInfo->typeofInOut('tax'), false); 26 } 27 $procedureInfo2 = $dbmeta->getProcedureInfo('PROC_IN_OUT'); 28 $test->ok($procedureInfo === $procedureInfo2, 'same instance'); 29 { 30 $test->diag(basename(__FILE__) . '::parameter[in:out:out]'); 31 $procedureInfo = $dbmeta->getProcedureInfo('PROC_IN_OUT_OUT'); 32 $parameters = array_map('strtolower', $procedureInfo->getParamNames()); 33 $expect = array('sales', 'tax', 'total'); 34 $test->is(count(array_diff($parameters, $expect)), 0); 35 $test->is($procedureInfo->typeofIn('sales'), true); 36 $test->is($procedureInfo->typeofOut('sales'), false); 37 $test->is($procedureInfo->typeofInOut('sales'), false); 38 $test->is($procedureInfo->typeofIn('tax'), false); 39 $test->is($procedureInfo->typeofOut('tax'), true); 40 $test->is($procedureInfo->typeofInOut('tax'), false); 41 $test->is($procedureInfo->typeofIn('total'), false); 42 $test->is($procedureInfo->typeofOut('total'), true); 43 $test->is($procedureInfo->typeofInOut('total'), false); 44 $test->ok($procedureInfo !== $procedureInfo2, 'not same instance;cause not same procedure'); 45 } 46 { 47 $test->diag(basename(__FILE__) . '::parameter[in:in]'); 48 $procedureInfo = $dbmeta->getProcedureInfo('PROC_IN_IN_MULTIRESULT'); 49 $parameters = array_map('strtoupper', $procedureInfo->getParamNames()); 50 $expect = array('IN_MGR_1', 'IN_MGR_2'); 51 $test->is(count(array_diff($parameters, $expect)), 0, 'check uppercase'); 52 $expect = array('in_mgr_1', 'in_mgr_2'); 53 $test->is(count(array_diff($parameters, $expect)), 2, 'check uppercase'); 54 $test->is($procedureInfo->typeofIn('IN_MGR_1'), true); 55 $test->is($procedureInfo->typeofOut('IN_MGR_1'), false); 56 $test->is($procedureInfo->typeofInOut('IN_MGR_1'), false); 57 $test->is($procedureInfo->typeofIn('IN_MGR_2'), true); 58 $test->is($procedureInfo->typeofOut('IN_MGR_2'), false); 59 $test->is($procedureInfo->typeofInOut('IN_MGR_2'), false); 60 } 61 { 62 $test->diag(basename(__FILE__) . '::parameter[inout]'); 63 $procedureInfo = $dbmeta->getProcedureInfo('PROC_INOUT'); 64 $parameters = array_map('strtolower', $procedureInfo->getParamNames()); 65 $expect = array('sales'); 66 $test->is(count(array_diff($parameters, $expect)), 0); 67 $test->is($procedureInfo->typeofIn('sales'), false); 68 $test->is($procedureInfo->typeofOut('sales'), false); 69 $test->is($procedureInfo->typeofInOut('sales'), true); 70 } 71 { 72 $test->diag(basename(__FILE__) . '::parameter[in]'); 73 $procedureInfo = $dbmeta->getProcedureInfo('PROC_IN_MULTIRESULT'); 74 $parameters = array_map('strtoupper', $procedureInfo->getParamNames()); 75 $expect = array('IN_MGR'); 76 $test->is(count(array_diff($parameters, $expect)), 0, 'check case insentive'); 77 $test->is($procedureInfo->typeofIn('IN_MGR'), true); 78 $test->is($procedureInfo->typeofOut('IN_MGR'), false); 79 $test->is($procedureInfo->typeofInOut('IN_MGR'), false); 80 } 81 { 82 $test->diag(basename(__FILE__) . '::parameter[out]'); 83 $procedureInfo = $dbmeta->getProcedureInfo('PROC_OUT_MULTIRESULT'); 84 $parameters = array_map('strtolower', $procedureInfo->getParamNames()); 85 $expect = array('param'); 86 $test->is(count(array_diff($parameters, $expect)), 0); 87 $test->is($procedureInfo->typeofIn('param'), false); 88 $test->is($procedureInfo->typeofOut('param'), true); 89 $test->is($procedureInfo->typeofInOut('param'), false); 90 } 91 { 92 $test->diag(basename(__FILE__) . '::parameter[]'); 93 $procedureInfo = $dbmeta->getProcedureInfo('PROC_NOSPEC_PARAM'); 94 $parameters = array_map('strtolower', $procedureInfo->getParamNames()); 95 $expect = array('param_1', 'param_2', 'param_3'); 96 $test->is(count(array_diff($parameters, $expect)), 0); 97 $test->is($procedureInfo->typeofIn('param_1'), true); 98 $test->is($procedureInfo->typeofOut('param_1'), false); 99 $test->is($procedureInfo->typeofInOut('param_1'), false); 100 $test->is($procedureInfo->typeofIn('param_2'), true); 101 $test->is($procedureInfo->typeofOut('param_2'), false); 102 $test->is($procedureInfo->typeofInOut('param_2'), false); 103 $test->is($procedureInfo->typeofIn('param_3'), true); 104 $test->is($procedureInfo->typeofOut('param_3'), false); 105 $test->is($procedureInfo->typeofInOut('param_3'), false); 106 } -
lang/php/misc/Hermit/test/resource/procedure-mysql.sql
r20314 r20325 7 7 DROP PROCEDURE IF EXISTS PROC_INOUT_MULTIRESULT; 8 8 DROP PROCEDURE IF EXISTS PROC_OUT_MULTIRESULT; 9 DROP PROCEDURE IF EXISTS PROC_NOSPEC_PARAM; 9 10 10 11 delimiter / … … 63 64 end; 64 65 / 66 67 CREATE PROCEDURE PROC_NOSPEC_PARAM(param_1 INTEGER, param_2 INTEGER, param_3 INTEGER) 68 begin 69 select * from EMP where empno = param_1; 70 select * from EMP where empno = param_2; 71 select * from EMP where empno = param_3; 72 end; 73 / -
lang/php/misc/Hermit/test/resource/procedure-mysql.sql.php
r20314 r20325 34 34 $sql = <<<__SQL__ 35 35 DROP PROCEDURE IF EXISTS PROC_OUT_MULTIRESULT; 36 __SQL__; 37 $pdo->exec($sql); 38 $sql = <<<__SQL__ 39 DROP PROCEDURE IF EXISTS PROC_NOSPEC_PARAM; 36 40 __SQL__; 37 41 $pdo->exec($sql); … … 127 131 $stmt->closeCursor(); 128 132 133 $sql = <<<__SQL__ 134 CREATE PROCEDURE PROC_NOSPEC_PARAM(param_1 INTEGER, param_2 INTEGER, param_3 INTEGER) 135 begin 136 select * from EMP where empno = param_1; 137 select * from EMP where empno = param_2; 138 select * from EMP where empno = param_3; 139 end; 140 / 141 __SQL__; 142 $stmt = $pdo->query($sql); 143 $stmt->closeCursor(); 144 129 145 $pdo->commit(); 130 146 } catch(PDOException $e){
![(please configure the [header_logo] section in trac.ini)](/share/chrome/site/your_project_logo.png)