sanu0074
Новичок
Здравствуйте. Я пишу свой супер-мега-заковыристый велосипед, с помощю CodeIgniter.
Понадобилось мне при загрузке одной библиотеки (класс), в ее конструктор передать указатель на поле другой библиотеки, которая уже заранее в первую очередь была загружена в конфиге autoload. Щас обо всем подробнее.
В конфиге autoload, грузится библиотека MyLib_1, выглядит она так:
В ней есть $dbh - соединение с БД, и метод который инклудит к скрипту класс со второй библиотекой
Уже например, для теста, в контроллере, я так подключаю 2ю библиотеку:
Я не использую здесь $this->load->libraries("MyLib_2"), потомучто мне нужно создавать несколько экземпляров класса MyLib_2.
Далее, я создаю экземпляр второй библиотеки, передавая в ее конструктор указатель на соединение с БД которое является полем первой библиотеки (MyLib_1):
В ее конструкторе, юзается все так:
Так вот, сама задача у меня состоит в том, чтобы в конструкторе второй библиотеки MyLib_2, можно было достучаться до $dbh первой библиотеки MyLib_1.
Т.Е. результат будет примерно такой:
- создаем экземпляр:
- конструктор второй библиотеки MyLib_2:
Как такое можно сделать?
Понадобилось мне при загрузке одной библиотеки (класс), в ее конструктор передать указатель на поле другой библиотеки, которая уже заранее в первую очередь была загружена в конфиге autoload. Щас обо всем подробнее.
В конфиге autoload, грузится библиотека MyLib_1, выглядит она так:
PHP:
class MyLib_1
{
public $dbh;
function __construct(){
$this -> dbh = new PDO("mysql:host=localhost;dbname=one",'root','111');
}
public function loadLib_2(){
include APPPATH.'libraries/MyLib_2.php';
}
}
Уже например, для теста, в контроллере, я так подключаю 2ю библиотеку:
PHP:
$this->MyLib_1->loadLib_2();
Далее, я создаю экземпляр второй библиотеки, передавая в ее конструктор указатель на соединение с БД которое является полем первой библиотеки (MyLib_1):
PHP:
$o = new MyLib_2("text",&$this->MyLib_1->dbh);
PHP:
public $str;
public $dbh;
function __construct($str,$dbh){
$this->dbh = $dbh;
$this->str=$str;
}
Т.Е. результат будет примерно такой:
- создаем экземпляр:
PHP:
$o = new MyLib_2("text");
PHP:
public $str;
public $dbh;
function __construct($str){
$this->dbh = УКАЗАТЕЛЬ НА $dbh первой библиотеки (MyLib_1)
$this->str=$str;
}