Форум программистов, компьютерный форум, киберфорум
PHP: ООП
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.59/29: Рейтинг темы: голосов - 29, средняя оценка - 4.59
2 / 2 / 1
Регистрация: 25.10.2013
Сообщений: 24

Ошибка Call to a member function getAll() on a non-object

19.04.2016, 15:44. Показов 6113. Ответов 15
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Файл globale_class.php. В этом файле указывает на ошибку "Fatal error: Call to a member function getAll() on a non-object in Z:\home\testik\www\lib\global_class.php on line 54".
PHP
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
<?php
require_once "config_class.php";
require_once "checkvalid_class.php";
require_once "database_class.php";
 
abstract class GlobalClass{
 
    private $db;
    private $table_name;
    protected $config;
    protected $valid;
 
 
    protected function __construct($table_name, $db){
        $this->db = $db;
        $this->table_name = $table_name;
        $this->config = new Config();
        $this->valid = new CheckValid();
    }
 
    protected function add($new_values){
        return $this->db->insert($this->table_name, $new_values);
    }
 
    protected function edit($id, $upd_fields){
        return $this->db->updateOnID($this->table_name, $id, $upd_fields);
    }
 
    public function delete($id){
        return $this->db->deleteOnID($this->table_name, $id);
    }
 
    public function deleteAll(){
        return $this->db->deleteAll($this->table_name);
    }
 
    protected function getField($field_out, $field_in, $value_in){
        return $this->db->getField($this->table_name, $field_out, $field_in, $value_in);
    }
 
    protected function getFieldOnID($id, $field){
        return $this->db->getFieldOnID($this->table_name, $id, $field);
    }
 
    protected function setFieldOnID($id, $field, $value){
        return $this->db->setFieldOnID($this->table_name, $id, $field, $value);
    }
 
    public function get($id){
        return $this->db->getElementOnID($this->table_name, $id);
    }
 
    public function getAll($order = "", $up = true){
        return $this->db->getAll($this->table_name, $order, $up);
    }
 
    protected function getAllOnField($field, $value, $order ="", $up = true){
        return $this->db->getAllOnField($this->table_name, $field, $value, $order, $up);
    }
 
    public function getRandomElement($count){
        return $this->db->getRandomElements($this->table_name, $count);
    }
 
    public function getLastID(){
        return $this->db->getLastID($this->table_name);
    }
 
    public function getCount(){
        return $this->db->getCount($this->table_name);
    }
 
    protected function isExists($field, $value){
        return $this->db->isExists($this->table_name, $field, $value);
    }
}
?>
Файл database_class.php
PHP
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
<?php
require_once "config_class.php";
require_once "checkvalid_class.php";
 
class DataBase{
    private $config;
    private $mysqli;
    private $valid;
 
    public function __construct(){
        $this->config = new Config();
        $this->valid = new CheckValid();
        $this->mysqli = new mysqli($this->config->host, $this->config->user, $this->config->password, $this->config->db);
        $this->mysqli->query("SET NAMES 'utf8'");
    }
 
    private function query($query){
        return $this->mysqli->query($query);
    }
 
    private function select($table_name, $fields, $where = "", $order = "", $up = true, $limit = ""){
        for ($i = 0; $i < count($fields); $i++){
            if ((strpos($fields[$i], "(") === false) && ($fields[$i] != "*")) $fields[$i] = "`".$fields[$i]."`";
        }
        $fields = implode(",", $fields);
        $table_name = $this->config->db_prefix.$table_name;
        if (!$order) $order = "ORDER BY `id`";
        else{
            if ($order != "RAND()"){
                $order = "ORDER BY `$order`";
                if (!$up) $order .= " DESC";
            }
            else $order = "ORDER BY $order";
        }
        if ($limit) $limit = "LIMIT $limit";
        if ($where) $query = "SELECT $fields FROM $table_name WHERE $where $order $limit";
        else $query = "SELECT $fields FROM $table_name $order $limit";
        $result_set = $this->query($query);
        if (!$result_set) return false;
        $i=0;
        while ($row = $result_set->fetch_assoc()) {
            $data[$i] = $row;
            $i++;
        }
        $result_set->close();
        return $data;
    }
 
    public function insert($table_name, $new_values){
        $table_name = $this->config->db_prefix.$table_name;
        $query = "INSERT INTO $table_name (";
        foreach ($new_values as $field => $value) $query .="`".$field."`,";
        $query=substr($query, 0, -1);
        $query .= ") VALUES (";
        foreach ($new_values as $value) $query .= "'".addslashes($value)."',";
        $query = substr($query, 0, -1);
        $query .= ")";
        return $this->query($query);
    }
 
    private function update($table_name, $upd_fields, $where){
        $table_name = $this->config->db_prefix.$table_name;
        $query = "UPDATE $table_name SET";
        foreach ($upd_fields as $field => $value) $query .= "`$field` ='".addslashes($value)."',";
        $query = substr($query, 0, -1);
        if ($where){
            $query .= " WHERE $where";
            return $this->query($query);
        }
        else return false;
    }
 
    public function delete($table_name, $where = ""){
        $table_name = $this->config->db_prefix.$table_name;
        if ($where){
            $query = "DELETE FROM $table_name WHERE $where";
            return $this->query($query);
        }
        else return false;
    }
 
    public function deleteAll($table_name){
        $table_name = $this->config->db_prefix.$table_name;
        $query = "TRUNCATE TABLE `$table_name`";
        return $this->query($query);
    }
 
    public function getField($table_name, $field_out, $field_in, $value_in){
        $data = $this->select($table_name, array($field_out),"`$field_in`='".addslashes($value_in)."'");
        if(count($data) != 1) return false;
        return $data[0][$field_out];
    }
 
    public function getFieldOnID($table_name, $id, $field_out){
        if (!$this->existsID($table_name, $id)) return false;
        return $this->getField($table_name, $field_out, "id", $id);
    }
 
    public function getAll($table_name, $order, $up){
        return $this->select($table_name, array("*"), "", $order, $up);
    }
 
    public function getAllOnField($table_name, $field, $value, $order, $up){
        return $this->select($table_name, array("*"), "`$field` = '".addslashes($value)."'", $order, $up);
    }
 
    public function getLastID($table_name){
        $data = $this->select($table_name, array("MAX(`id`)"));
        return $data[0]["MAX(`id`)"];
    }
 
    public function deleteOnID($table_name, $id){
        if (!$this->existsID($table_name, $id)) return false;
        return $this->delete($table_name, "`id` = '$id'");
    }
 
    public function serField($table_name, $field, $value, $field_in, $value_in){
        return $this->update($table_name, array($field=>$value), "`$field_in` = '".addslashes($value_in)."'");
    }
 
    public function setFieldOnID($table_name, $id, $field, $value){
        if (!$this->existsID($table_name, $id)) return false;
        return $this->setField($table_name, $field, $value, "id", $id);
    }
 
    public function getElementOnID($table_name, $id){
        if (!$this->existsID($table_name, $id)) return false;
        $arr = $this->select($table_name, array("*"), "`id` = '$id'");
        return $arr[0];
    }
 
    public function getRandomElements($table_name, $count){
        return $this->select($table_name, array("*"), "", "RAND()", true, $count);
    }
 
    public function getCount($table_name){
        $data = $this->select($table_name, array("COUNT(`id`)"));
        return $data[0]["COUNT(`id`)"];
    }
 
    public function isExists($table_name, $field, $value){
        $data = $this->select($table_name, array("id"), "`$field` = '".addslashes($value)."'");
        if (count($data) === 0) return false;
        return true;
    }
 
    private function existsID($table_name, $id){
        if (!$this->valid->validID($id)) return false;
        $data = $this->select($table_name, array("id"), "`id` = '".addslashes($id)."'");
        if (count($data) === 0) return false;
        return true;
    }
 
    public function __destruct(){
        if ($this->mysqli) $this->mysqli->close();
    }
}
?>
Просматривал код не раз, думал уже что то с tpl файлами или с базой но там все нормально. Может где косяк, нужна помощь желательно с объяснением, только простое объяснение без замудрений.
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
19.04.2016, 15:44
Ответы с готовыми решениями:

Ошибка: Call to a member function prepare() on a non-object
Здравствуйте, форумчане! Надеюсь, что попал в нужную тему. Суть проблемы такова. Нужно написать REST API с двумя методами:...

Call to a member function query() on a non-object
Доброй, продуктивной, ночи! Столкнулся с проблемой. Если в классе есть конструктор, при вызове функции queru выдает ошибку Call to a...

Ошибка при работе с ПДО "Call to a member function setAttribute() on a non-object"
привет, всех с наступившим! :drink: вот часть класса для работы с бд class DB{ private $handler; private static function...

15
wq
85 / 78 / 32
Регистрация: 26.11.2015
Сообщений: 481
19.04.2016, 16:32
черным по английски написано: у переменной, которая не является объектом, вы пытаетесь вызвать метод getAll().. нам что отлаживать вашу программу? Искать где какое значение вашей переменной присваивается?
0
Эксперт PHP
5755 / 4134 / 1508
Регистрация: 06.01.2011
Сообщений: 11,276
19.04.2016, 16:41
PHP
1
private $db;
Замените на:
PHP
1
protected $db;
0
Hello Kitty
 Аватар для WhiteMind
690 / 562 / 402
Регистрация: 12.02.2016
Сообщений: 1,436
Записей в блоге: 1
19.04.2016, 16:45
Цитата Сообщение от Para bellum Посмотреть сообщение
PHPВыделить код
1
private $db;
Замените на:
PHPВыделить код
1
protected $db;
зачем?
0
wq
85 / 78 / 32
Регистрация: 26.11.2015
Сообщений: 481
19.04.2016, 16:51
да там дэбе передается в конструкторе. ТС вывалил портянку ненужного кода, а где его дебе создается не показал. обсуждать тут нечего до получения внятной информации
0
Hello Kitty
 Аватар для WhiteMind
690 / 562 / 402
Регистрация: 12.02.2016
Сообщений: 1,436
Записей в блоге: 1
19.04.2016, 16:52
---------------
что покажет?
PHP
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
<?php
require_once "config_class.php";
require_once "checkvalid_class.php";
require_once "database_class.php";
 
abstract class GlobalClass{
 
    private $db;
    private $table_name;
    protected $config;
    protected $valid;
 
 
    protected function __construct($table_name, DataBase $db){
        $this->db = $db;
        $this->table_name = $table_name;
        $this->config = new Config();
        $this->valid = new CheckValid();
    }
 
    protected function add($new_values){
        return $this->db->insert($this->table_name, $new_values);
    }
 
    protected function edit($id, $upd_fields){
        return $this->db->updateOnID($this->table_name, $id, $upd_fields);
    }
 
    public function delete($id){
        return $this->db->deleteOnID($this->table_name, $id);
    }
 
    public function deleteAll(){
        return $this->db->deleteAll($this->table_name);
    }
 
    protected function getField($field_out, $field_in, $value_in){
        return $this->db->getField($this->table_name, $field_out, $field_in, $value_in);
    }
 
    protected function getFieldOnID($id, $field){
        return $this->db->getFieldOnID($this->table_name, $id, $field);
    }
 
    protected function setFieldOnID($id, $field, $value){
        return $this->db->setFieldOnID($this->table_name, $id, $field, $value);
    }
 
    public function get($id){
        return $this->db->getElementOnID($this->table_name, $id);
    }
 
    public function getAll($order = "", $up = true){
        return $this->db->getAll($this->table_name, $order, $up);
    }
 
    protected function getAllOnField($field, $value, $order ="", $up = true){
        return $this->db->getAllOnField($this->table_name, $field, $value, $order, $up);
    }
 
    public function getRandomElement($count){
        return $this->db->getRandomElements($this->table_name, $count);
    }
 
    public function getLastID(){
        return $this->db->getLastID($this->table_name);
    }
 
    public function getCount(){
        return $this->db->getCount($this->table_name);
    }
 
    protected function isExists($field, $value){
        return $this->db->isExists($this->table_name, $field, $value);
    }
}
?>
0
Эксперт PHP
5755 / 4134 / 1508
Регистрация: 06.01.2011
Сообщений: 11,276
19.04.2016, 16:55
Цитата Сообщение от WhiteMind Посмотреть сообщение
зачем?
Чтобы $db была видна в дочерних.
1
wq
85 / 78 / 32
Регистрация: 26.11.2015
Сообщений: 481
19.04.2016, 16:56
Цитата Сообщение от WhiteMind Посмотреть сообщение
что покажет?
зачем вы опять с неумными вопросами встреваете? Не стоит, уже надоело. Специально для вас расшифрую : Где создается объект? из кода ТС этого не видно
0
Hello Kitty
 Аватар для WhiteMind
690 / 562 / 402
Регистрация: 12.02.2016
Сообщений: 1,436
Записей в блоге: 1
19.04.2016, 16:57
Цитата Сообщение от Para bellum Посмотреть сообщение
Чтобы $db была видна в дочерних.
но ведь есть методы в классе , и $db не нужна
0
Эксперт PHP
5755 / 4134 / 1508
Регистрация: 06.01.2011
Сообщений: 11,276
19.04.2016, 16:58
Тупнул я, одним словом.
0
Hello Kitty
 Аватар для WhiteMind
690 / 562 / 402
Регистрация: 12.02.2016
Сообщений: 1,436
Записей в блоге: 1
19.04.2016, 17:01
Цитата Сообщение от wq Посмотреть сообщение
Где создается объект? из кода ТС этого не видно
будет видно место откуда передается $db.
т.к. protected function __construct($table_name, DataBase $db)
очевидно что это метод класса который наследует GlobalClass
мб там ошибка =)
0
Эксперт PHP
5755 / 4134 / 1508
Регистрация: 06.01.2011
Сообщений: 11,276
19.04.2016, 17:02
Цитата Сообщение от wq Посмотреть сообщение
Специально для вас расшифрую : Где создается объект? из кода ТС этого не видно
А это неважно. Так как, согласно коду, передать в конструктор можно объект класса "DataBase". Там как минимум, вообще другая ошибка должна вылазить. Либо ТС переопределил конструктор в дочернем.
0
wq
85 / 78 / 32
Регистрация: 26.11.2015
Сообщений: 481
19.04.2016, 17:17
Цитата Сообщение от Para bellum Посмотреть сообщение
А это неважно. Так как, согласно коду, передать в конструктор можно объект класса "DataBase".
Цитата Сообщение от Hugs Посмотреть сообщение
__construct($table_name, $db)
указания типа нет
Добавлено через 2 минуты
Указание типа придумал WhiteMind что правильно
0
Эксперт PHP
5755 / 4134 / 1508
Регистрация: 06.01.2011
Сообщений: 11,276
19.04.2016, 17:34
Цитата Сообщение от wq Посмотреть сообщение
указания типа нет
Ой, блин, точно. Видимо не докрутил страницу до начала и посмотрел код WhiteMind.
0
2 / 2 / 1
Регистрация: 25.10.2013
Сообщений: 24
19.04.2016, 17:55  [ТС]
Как видите я подключаю config_class.php в этом файле я и передаю $db название базы.
PHP
1
2
3
4
5
class config{
..............
    var $db = "basedan";
..............
}
0
wq
85 / 78 / 32
Регистрация: 26.11.2015
Сообщений: 481
19.04.2016, 17:56
текст не есть объект
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
19.04.2016, 17:56
Помогаю со студенческими работами здесь

Fatal error: Call to a member function on a non-object in
Прошу помощи. Начал учить ООП в php. Не могу додуматься почему не идёт class FFF { function ZZZ() { echo &quot;порядок...

Fatal error: Call to a member function prepare() on a non-object
Не знаю куда написать, и можно здесь тему, можно и в бд, не пинайте, если написал не туда. Проблема в следующем : выходит ошибка Fatal...

Fatal error: Call to a member function find() on a non-object
Где он теряет свойство объекта? &lt;? include('simple_html_dom.php'); $companies = new simple_html_dom(); ...

Ошибка call to a member function query() on a non-object in php mysqli
Добрый день, выскакивает ошибка call to a member function query() on a non-object $resut = $mysqli-&gt;query(&quot;SELECT `users` FROM `$gid`...

Fatal error: Call to a member function close() on a non-object in ....index.php on line 237
нужна помощь вставляю код пхп приведенный ниже в шаблон DLE все супер работает но выдает такую ошибку: Fatal error: Call to a member...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
16
Ответ Создать тему
Новые блоги и статьи
Первый деплой
lagorue 16.01.2026
Не спеша развернул своё 1ое приложение в kubernetes. А дальше мне интересно создать 1фронтэнд приложения и 2 бэкэнд приложения развернуть 2 деплоя в кубере получится 2 сервиса и что-бы они. . .
Расчёт переходных процессов в цепи постоянного тока
igorrr37 16.01.2026
/ * Дана цепь постоянного тока с R, L, C, k(ключ), U, E, J. Программа составляет систему уравнений по 1 и 2 законам Кирхгофа, решает её и находит токи на L и напряжения на C в установ. режимах до и. . .
Восстановить юзерскрипты Greasemonkey из бэкапа браузера
damix 15.01.2026
Если восстановить из бэкапа профиль Firefox после переустановки винды, то список юзерскриптов в Greasemonkey будет пустым. Но восстановить их можно так. Для этого понадобится консольная утилита. . .
Изучаю kubernetes
lagorue 13.01.2026
А пригодятся-ли мне знания kubernetes в России?
Сукцессия микоризы: основная теория в виде двух уравнений.
anaschu 11.01.2026
https:/ / rutube. ru/ video/ 7a537f578d808e67a3c6fd818a44a5c4/
WordPad для Windows 11
Jel 10.01.2026
WordPad для Windows 11 — это приложение, которое восстанавливает классический текстовый редактор WordPad в операционной системе Windows 11. После того как Microsoft исключила WordPad из. . .
Classic Notepad for Windows 11
Jel 10.01.2026
Old Classic Notepad for Windows 11 Приложение для Windows 11, позволяющее пользователям вернуть классическую версию текстового редактора «Блокнот» из Windows 10. Программа предоставляет более. . .
Почему дизайн решает?
Neotwalker 09.01.2026
В современном мире, где конкуренция за внимание потребителя достигла пика, дизайн становится мощным инструментом для успеха бренда. Это не просто красивый внешний вид продукта или сайта — это. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru