Хорошо, поэтому у меня есть следующая настройка кода, которая, кажется, работает нормально:
пользовательский обработчик "module":
class user_handler
{
private $dbo;
public function __construct($dbo)
{
$this->dbo = $dbo;
}
public function user_table_method()
{
$this->dbo->generic_db_method();
}
}
класс соединения:
class connection
{
private $dbc;
public $user;
public function __construct()
{
$this->dbc = 'connection';
$this->user = new user_handler($this);
}
public function generic_db_method()
{
echo '<p>doing stuff with ' . $this->dbc . '</p>';
}
}
Тогда я могу получить доступ к методам пользовательских обработчиков, например:
$dbc = new connection();
$dbc->user->user_table_method();
Мой вопрос такой:
Было бы возможно с помощью метода в классе connection
создать _user
объект только тогда, когда он необходим?
Я думаю о методе, который будет использоваться следующим образом:
$dbc->add_handle('user', 'user_handler');
, который создаст новое открытое свойствоВызывается user
с нуля и устанавливается как новый user_handler
объект:
// in more detail
public function add_handle($name, $module)
{
if(!isset($this->/*somehow use $name*/))
{
$this->/*somehow use $name*/ = new /*somehow use $module*/();
}
}
.. поэтому новый способ его установки будет выглядеть так:
$dbc = new connection();
$dbc->add_handle('user', 'user_handler');
$dbc->user->user_table_method();
Спасибозаблаговременно!(смотря на php 5.2 и выше)