Форум программистов, компьютерный форум, киберфорум
PHP: ООП
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.67/6: Рейтинг темы: голосов - 6, средняя оценка - 4.67
 Аватар для Raider_
23 / 23 / 6
Регистрация: 22.02.2015
Сообщений: 68

Абстрактный класс не наследует методы

25.07.2015, 21:00. Показов 1355. Ответов 7
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Абстрактный класс не наследует методы, есть несколько классов
class core-->abstract class ACore
в первом я пишу:
PHP
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
class core {
    
    protected $db;
    public $Set;
    public $ini;
    
    function __construct() {
        $this->ini = new ini($_SERVER['DOCUMENT_ROOT'].'/setting.ini');
        $this->Set = $this->ini->getAll();
        
        $this->db = new mysqli($this->Set['general']['db_host'],$this->Set['general']['db_user'],$this->Set['general']['db_pass'],$this->Set['general']['db_select']);
        if ($this->db->connect_error) {
            die('Connect Error (' . $mysqli->connect_errno . ') ' . $mysqli->connect_error);
        }
    }
}
и соответственно вот это во втором:
PHP
1
2
3
4
5
6
7
abstract class ACore extends core {
    
    public function __construct(){
        $this->Set['general']['title']; //на это не ругается     
        $this->db->query("DELETE FROM un_user WHERE date <= CURRENT_DATE() - INTERVAL 7 DAY"); //а на это ругается!
    }
}
Fatal error: Call to a member function query() on a non-object in ........./classes/ACore.php on line 5
Собственно объясните почему так и как исправить?
P.S 1 код не весь, 2 все начиналось с того как свою CMS начал переписывать под mysqli!
0
Лучшие ответы (1)
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
25.07.2015, 21:00
Ответы с готовыми решениями:

Класс не наследует свойство, если там ссылка на другой объект
Есть вот такой класс: namespace controllers\admin; use controllers\admin\DefaultController; class AuthController extends...

Абстрактный класс, виртуальные методы
Учащийся: школьник, студент, аспирант. Каждый учащийся характеризуется: ФИО строки), дата рождения, пол (М/Ж). Школьник дополнительно...

Виртуальный методы, абстрактный класс.
Здравствуйте. Теоретические вопросы. Что такое виртуальный методы и что такое абстрактный класс. Можете объяснить своими словами без...

7
59 / 59 / 46
Регистрация: 01.03.2015
Сообщений: 179
25.07.2015, 23:13
Потому, что родительский конструктор не вызывается.
Перед вызовом метода query, напишите:
PHP
1
parent::__construct();
0
 Аватар для Raider_
23 / 23 / 6
Регистрация: 22.02.2015
Сообщений: 68
25.07.2015, 23:21  [ТС]
Цитата Сообщение от SB5Ch Посмотреть сообщение
Потому, что родительский конструктор не вызывается.
Если не трудно объясните пожалуйста почему так происходит?
Насколько мне известно при вызове класса в любом случии срабатывает первый __construct() а потом все остальное!
0
59 / 59 / 46
Регистрация: 01.03.2015
Сообщений: 179
25.07.2015, 23:41
Лучший ответ Сообщение было отмечено Raider_ как решение

Решение

Цитата Сообщение от Raider_ Посмотреть сообщение
Насколько мне известно при вызове класса в любом случии срабатывает первый __construct() а потом все остальное!
Когда у класса-потомка объявлен собственный конструктор, то родительский не вызывается.
1
 Аватар для Raider_
23 / 23 / 6
Регистрация: 22.02.2015
Сообщений: 68
25.07.2015, 23:45  [ТС]
Спасибо!
0
 Аватар для Dolphin
814 / 797 / 201
Регистрация: 21.09.2012
Сообщений: 2,656
25.07.2015, 23:48
Как то не по людски, абстрактный класс, расширять обычным...
0
59 / 59 / 46
Регистрация: 01.03.2015
Сообщений: 179
25.07.2015, 23:53
Можете ещё тут прочитать об этом: http://php.net/manual/ru/language.oop5.decon.php
0
 Аватар для Raider_
23 / 23 / 6
Регистрация: 22.02.2015
Сообщений: 68
25.07.2015, 23:58  [ТС]
Цитата Сообщение от Dolphin Посмотреть сообщение
Как то не по людски, абстрактный класс, расширять обычным...
Ну как иерархию построил так и делаю просто по другому для моих нужд не сделать
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
25.07.2015, 23:58
Помогаю со студенческими работами здесь

Абстрактный класс и его наследники - не получается вызвать методы
Есть абстрактный класс, есть классы-наследники, реализующие методы абстрактного класса. В одном классе-наследнике хочу добавить методы...

Дан абстрактный класс «Геометрическая фигура», внутри него определить абстрактные и (или) виртуальные методы
Здравствуйте, помогите пожалуйста с данной задачей: Дан абстрактный класс «Геометрическая фигура», внутри него определить абстрактные и...

Дан абстрактный класс «Геометрическая фигура», внутри него определить абстрактные и (или) виртуальные методы
Дан абстрактный класс «Геометрическая фигура», внутри него определить абстрактные и (или) виртуальные методы. Производным классом...

Объясните как объявить абстрактный класс, и при этом не тащить виртуальные методы в производные классы
Суть вопроса - есть у меня класс, который я решаю сделать абстрактным. Как я понимаю что бы сделать класс абстрактным необходимо просто...

абстрактный класс как реализовать данные, над которыми методы выполняют какие-либо действия
Абстрактный класс как реализовать данные, над которыми методы выполняют какие-либо действия Задание: форматированный ввод и вывод...


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

Или воспользуйтесь поиском по форуму:
8
Ответ Создать тему
Новые блоги и статьи
Functional First Web Framework Suave
DevAlt 30.03.2026
Sauve. IO Апнулись до NET10. Из зависимостей один пакет, работает одинаково хорошо как в режиме проекта так и в интерактивном режиме. из сложностей - чисто функциональный подход. Решил. . .
Автоматическое создание документа при проведении другого документа
Maks 29.03.2026
Реализация из решения ниже выполнена на нетиповых документах, разработанных в конфигурации КА2. Есть нетиповой документ "ЗаявкаНаРемонтСпецтехники" и нетиповой документ "ПланированиеСпецтехники". В. . .
Настройка движения справочника по регистру сведений
Maks 29.03.2026
Решение ниже реализовано на примере нетипового справочника "ТарифыМобильнойСвязи" разработанного в конфигурации КА2, с целью учета корпоративной мобильной связи в коммерческом предприятии. . . .
Автозаполнение реквизита при выборе элемента справочника
Maks 27.03.2026
Программный код из решения ниже на примере нетипового документа "ЗаявкаНаРемонтСпецтехники" разработанного в конфигурации КА2. При выборе "Спецтехники" (Тип Справочник. Спецтехника), заполняется. . .
Сумматор с применением элементов трёх состояний.
Hrethgir 26.03.2026
Тут. https:/ / fips. ru/ EGD/ ab3c85c8-836d-4866-871b-c2f0c5d77fbc Первый документ красиво выглядит, но без схемы. Это конечно не даёт никаких плюсов автору, но тем не менее. . . всё может быть. . .
Автозаполнение реквизитов при создании документа
Maks 26.03.2026
Программный код из решения ниже размещается в модуле объекта документа, в процедуре "ПриСозданииНаСервере". Алгоритм проверки заполнения реализован для исключения перезаписи значения реквизита,. . .
Команды формы и диалоговое окно
Maks 26.03.2026
1. Команда формы "ЗаполнитьЗапчасти". Программный код из решения ниже на примере нетипового документа "ЗаявкаНаРемонтСпецтехники" разработанного в конфигурации КА2. В качестве источника данных. . .
Кому нужен AOT?
DevAlt 26.03.2026
Решил сделать простой ланчер Написал заготовку: dotnet new console --aot -o UrlHandler var items = args. Split(":"); var tag = items; var id = items; var executable = args;. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru