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

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

25.07.2015, 21:00. Показов 1323. Ответов 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
Ответ Создать тему
Новые блоги и статьи
влияние грибов на сукцессию
anaschu 26.01.2026
Бифуркационные изменения массы гриба происходят тогда, когда мы уменьшаем массу компоста в 10 раз, а скорость прироста биомассы уменьшаем в три раза. Скорость прироста биомассы может уменьшаться за. . .
Воспроизведение звукового файла с помощью SDL3_mixer при касании экрана Android
8Observer8 26.01.2026
Содержание блога SDL3_mixer - это библиотека я для воспроизведения аудио. В отличие от инструкции по добавлению текста код по проигрыванию звука уже содержится в шаблоне примера. Нужно только. . .
Установка Android SDK, NDK, JDK, CMake и т.д.
8Observer8 25.01.2026
Содержание блога Перейдите по ссылке: https:/ / developer. android. com/ studio и в самом низу страницы кликните по архиву "commandlinetools-win-xxxxxx_latest. zip" Извлеките архив и вы увидите. . .
Вывод текста со шрифтом TTF на Android с помощью библиотеки SDL3_ttf
8Observer8 25.01.2026
Содержание блога Если у вас не установлены Android SDK, NDK, JDK, и т. д. то сделайте это по следующей инструкции: Установка Android SDK, NDK, JDK, CMake и т. д. Сборка примера Скачайте. . .
Использование SDL3-callbacks вместо функции main() на Android, Desktop и WebAssembly
8Observer8 24.01.2026
Содержание блога Если вы откроете примеры для начинающих на официальном репозитории SDL3 в папке: examples, то вы увидите, что все примеры используют следующие четыре обязательные функции, а. . .
моя боль
iceja 24.01.2026
Выложила интерполяцию кубическими сплайнами www. iceja. net REST сервисы временно не работают, только через Web. Написала за 56 рабочих часов этот сайт с нуля. При помощи perplexity. ai PRO , при. . .
Модель сукцессии микоризы
anaschu 24.01.2026
Решили писать научную статью с неким РОманом
http://iceja.net/ математические сервисы
iceja 20.01.2026
Обновила свой сайт http:/ / iceja. net/ , приделала Fast Fourier Transform экстраполяцию сигналов. Однако предсказывает далеко не каждый сигнал (см ограничения http:/ / iceja. net/ fourier/ docs ). Также. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru