Ваша проблема в том, что $ this-> load не существует в вашем классе
Один из ответов - использовать 'post_controller_constructor'
. Это позволяет вам расширить CI_Controller и получить доступ ко всем вкусностям.
$hook['post_controller_constructor'] = array(
'class' => 'Maintenance',
'function' => 'maintenance_check',
'filename' => 'Maintenance.php',
'filepath' => 'hooks'
);
Ваш класс обслуживания будет выглядеть примерно так (у меня есть некоторый отладочный код, чтобы увидеть, что происходит.)
<?php
class Maintenance extends CI_Controller {
public function maintenance_check() {
$this->load->database();
$result = $this->db->query('SELECT * FROM maintenance');
$mode = $result->row_array();
var_dump($mode['mode']);
if ($mode['mode'] == TRUE) {
echo 'maintenance';
}
}
}
Не совсем уверен в вашей схеме для таблицы обслуживания. Похоже, было бы более подходящим быть записью в таблице параметров с идентификатором, именем, значением.
Так что, возможно, что-то вроде
public function maintenance_check() {
$this->load->database();
$result = $this->db->query("SELECT value FROM options WHERE name='maintenance'");
$row = $result->row_array();
if ($row['value'] == TRUE) {
echo 'maintenance';
}
}