Работа с расширенными классами в PHP - PullRequest
0 голосов
/ 25 марта 2012

У меня есть 2 класса, которые выглядят так:

class db {

    protected $db;

    function __construct() {
        $this->connect();
    }

    protected function connect() {
        $this->db = new MySQLi(db_host, db_user, db_pass, db_name) or die($this->db->error);
        $this->db->set_charset('utf8');
    }

}

и

class sample extends db {

    protected $js_base_dir;

    public function __construct($js_base_dir = js_dir) {
        $this->js_base_dir = $js_base_dir . "/";
    }
 ....

Я хочу использовать $ this-> db во втором классе, но __construct в sample классе переопределяет функцию конструирования первых классов. Как получить $ this-> db во втором классе? Я что-то не так делаю? если да, то как правильно?

Ответы [ 2 ]

3 голосов
/ 25 марта 2012

Вы можете вызвать метод родительского класса, используя parrent::methodName(). Точно так же вы можете использовать это для вызова метода конструктора родителя, а также

parent::__construct();

Использование:

public function __construct($js_base_dir = js_dir) {
    parent::_construct();
    $this->js_base_dir = $js_base_dir . "/";
}

Помимо руководства прочитайте эту статью для подробного объяснения.

0 голосов
/ 25 марта 2012

Попробуйте это:

public function __construct($js_base_dir = js_dir) {

    parent::__construct();

    $this->js_base_dir = $js_base_dir . "/";        
}
...