PHP 5はオブジェクトに対する新しい疑問点であり,クラスオブジェクトインスタンスがクラス内のプライベートメソッドにアクセスできるかどうかはバグかどうか分からない.
まずコードを見てください.
ハイライトに問題があるはずです
ここでオブジェクトインスタンスからプライベートメソッドにアクセスできるなんて不思議です....1つのクラスのコードがオブジェクトで個別に区切られるのではなく、呼び出すことができるからではないでしょうか.
class orm_factory {
/**
*
*
* @var orm_driver
*/
private $_driver = null ;
/**
*
*
* @var orm_table_operator
*/
private $_table_operator = null ;
private static $_valid_dsn_set = array();
private function __init_params(orm_driver $driver,orm_table_operator $table_operator){
$this->_driver = $driver ;echo "111111111111" ;
$this->_table_operator = $table_operator ;
}
function get_driver(){
return $this->_driver ;
}
/**
*
* @param string $dsn
* @return orm_factory
*/
static function instance($dsn){
static $inst = null ;
if (!$inst) $inst = new orm_factory() ;
if (!isset(self::$_valid_dsn_set[$dsn])){
try {
$driver = new orm_driver($dsn) ;
$driver->open_connect();
$table_operator = new orm_table_operator($driver);
self::$_valid_dsn_set[$dsn] = array(
'__driver__' => $driver ,
'__operator__' => $table_operator
);
} catch (orm_driver_exception $ex){
throw new orm_factory_exception($ex->getMessage());
}
}
$inst->__init_params(self::$_valid_dsn_set[$dsn]['__driver__'],self::$_valid_dsn_set[$dsn]['__operator__']);
return $inst ;
}
/**
*
* @param string $table
* @return orm_table_operator
*/
function get_operator($table){
// orm_table_exception
$this->_table_operator->register_table($table) ;
return $this->_table_operator;
}
}
ハイライトに問題があるはずです
$inst->__init_params
ここでオブジェクトインスタンスからプライベートメソッドにアクセスできるなんて不思議です....1つのクラスのコードがオブジェクトで個別に区切られるのではなく、呼び出すことができるからではないでしょうか.