Как получить доступ к базе данных в классе библиотеки?

Я переписываю свое приложение, чтобы использовать CodeIgniter. В настоящее время я борюсь с БД. Я настроил базы данных в config/databases.php но понятия не имею, как получить доступ к ним на уровне библиотеки.

Я загружаю библиотеки через autoload.php :

 $autoload['libraries'] = array('database', 'FGMembersite', 'phpmailer', 'formvalidator'); 

FGMembersite – это класс, который я использую для регистрации и входа в систему.
Я получаю доступ к этому классу в виде login.php где у меня есть:

 if(isset($_POST['submitted'])) { if($this->fgmembersite->Login()) { $this->fgmembersite->RedirectToURL("main"); } } 

fgmembersite->Login() приводит к:

 public function DBLogin() { $this->connection = pg_connect("host=localhost port=5432 dbname=".$this->db->database." user=".$this->ci->db->username." password=".$this->db->password.""); 

но DBLogin() здесь не понимает, что такое db . Я получаю ошибки, подобные
Undefined property: FGMembersite::$db
или
Trying to get property of non-object

Как я должен получить доступ к конфигурации базы данных в моем FGMembersite ?

Related of "Как получить доступ к базе данных в классе библиотеки?"

Для получения доступа к автоматически загружаемым библиотекам из других библиотек вам необходимо использовать супер-объект CodeIgniter . Вот так

 $ci =& get_instance(); $this->connection = pg_connect("host=localhost port=5432 dbname=" . $ci->db->database . " user=" . $ci->db->username . " password=" . $ci->db->password ); 

Похоже, вы пытались использовать этот метод в своем коде, за исключением того, что вы использовали его только для поля username , а не для database и password .

Вы можете сохранить экземпляр ci, назначив его свойству класса в свой конструктор классов, например:

 class Yourclass { private $ci; public function __construct() { $this->ci =& get_instance(); } public DBLogin() { $this->connection = pg_connect("host=localhost port=5432 dbname=" . $this->ci->db->database . " user=" . $this->ci->db->username . " password=" . $this->ci->db->password ); } public somethingElse() { print_r ($this->ci->db->username); } }