Хочу сделать аналог функции $this->log->write, который будет писать в базу отчёты о завершении заданий по крону Добавил в system\library\log.php public function write_sql() { $sql = " простейший UPDATE, проверял - работает"; $query = $this->db->query($sql); } Ругается на SyntaxError: Unexpected token '<', "<br /> <b>"… is not valid JSON parsererror <br /> <b>Fatal error</b>: Call to a member function query() on null in <b>/ home/.../system/library/log.php </b> on line <b>37</b><br /> Притом рядом лежит файл system\library\openbay.php - в котором та же самая конструкция $query = $this->db->query используется много раз
Здравствуйте В классе Log попросту нет поддержки db, вам нужно либо передавать db через параметры, либо как-то иначе создавать
Я в ООП ноль Поддержка дополнительных функций добавляется же при создании класса? В system\library\openbay.php не нашёл ничего похожего на db final class Openbay { private $registry; private $installed_modules = array(); public $installed_markets = array(); public function __construct($registry) { $this->registry = $registry; $this->getInstalled(); foreach ($this->installed_markets as $market) { $class = '\openbay\\'. ucfirst($market); $this->{$market} = new $class($registry); } $this->logger = new \Log('openbay.log'); } public function __get($name) { return $this->registry->get($name); } ... private function getInstalled() { $query = $this->db->query("SELECT * FROM " . DB_PREFIX . "extension WHERE `type` = 'openbay'"); foreach ($query->rows as $result) { $this->installed_markets[] = $result['code']; } } Где db подключается?
final class Openbay { private $registry; private $installed_modules = array(); public $installed_markets = array(); public function __construct($registry) { $this->registry = $registry; $this->getInstalled(); foreach ($this->installed_markets as $market) { $class = '\openbay\\'. ucfirst($market); $this->{$market} = new $class($registry); } $this->logger = new \Log('openbay.log'); } public function __get($name) { return $this->registry->get($name); } ... private function getInstalled() { $query = $this->db->query("SELECT * FROM " . DB_PREFIX . "extension WHERE `type` = 'openbay'"); foreach ($query->rows as $result) { $this->installed_markets[] = $result['code']; } }