Вы хотите использовать композицию здесь.Также можно рассмотреть возможность изучения шаблона Singleton.
Чтобы уточнить, используя композицию, каждый класс в вашей библиотеке будет иметь экземпляр класса db
, а не будет Экземпляр класса db
.
Синглтон заставит класс db обеспечить выполнение только одного экземпляра класса, который полезен для общих ресурсов, таких как соединения с базой данных.Посмотрите эту ссылку для дальнейшего чтения по теме.
http://php.net/manual/en/language.oop5.patterns.php
РЕДАКТИРОВАТЬ: Добавление некоторого кода
Превращение класса БД в синглтон
<?php
class db
{
static private $_oInstance = null;
protected $db;
private function __construct()
{
$this->connect();
}
static public function getInstance()
{
if(self::$_oInstance === null)
self::$_oInstance = new db();
return self::$_oInstance();
}
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 registration
{
private $_oDb;
public $validation;
function __construct()
{
parent::__construct();
$this->_oDb = db::getInstance();
$this->validation = new validation();
}
// ...
}