Хобрук: Ваш путь к мастерству в программировании

Наследование функции init в php

Поэтому я некоторое время думал об этом и задавался вопросом, работает ли вообще моя функция инициализации. Это связано с идеей объекта инициализация в Zend Framework.

Предположим, у меня есть такой базовый класс:

class Base{
    public function __construct(){
        $this->init();
    }

    public function init(){}
}

Теперь давайте предположим, что у меня есть класс из этого, который должен принять параметр параметров в конструкторе. Почему бы вам не использовать функцию инициализации в родительском классе, я понятия не имею, но этот пример основан на реальном коде, которым я не могу поделиться.

class ExtendsBase extends Base{

    private $_options;

    public function __construct($options){
        parent::__construct();
        $this->_options = $options;
    }

    // Why even instantiate this if never using it?
    public function init(){
     parent::init();
    } 
}

Итак, оттуда нам нужно расширить это и фактически заполнить init некоторыми вещами.

class EchoHello extends ExtendsBase{

    public function init(){
        parent::init();
        echo "hello"; exit;
    }
}

И тогда мы должны быть в состоянии сделать это:

$someVar = new EchoHello(array());
// Instantiate should echo hello and exit.

Проблема в том, что echo "hello"; exit; никогда не выполняется. Что-то не так с цепочкой наследования?


  • То, что вы сказали, должно работать, но есть некоторые синтаксические ошибки. class EchoHello extends ExtendBase, нет ExtendBase класса, есть ExtendsBase и в private _options; тебе чего-то не хватает: private $_options; 09.10.2013
  • Извиняюсь за это, я написал это прямо здесь. Извините за синтаксические ошибки. Я был сбит с толку, работает ли этот тип наследования или нет. 09.10.2013
  • Я не пробовал, но уверен, что он работает так, как вы задумали (без ошибок, конечно), возможно, ваша проблема с исходным кодом где-то еще 09.10.2013
  • Я обновил код, чтобы удалить ошибки, если кто-нибудь может попробовать ... Исходный код очень похож на настройки. и когда я пытаюсь повторить что-то в его инициализации, это не работает. 09.10.2013
  • eval.in/53414 09.10.2013

Ответы:


1

Судя по всему, этот фрагмент кода выполняется так, как должен. как указано в этом скрипте eval.

09.10.2013
Новые материалы

Управление DOM для чайников вроде меня
Одной из первых вещей, которую мы рассмотрели, когда начали изучать Javascript во Flatiron, была модель DOM. Кто он? Чем он занимается? Он больше машина, чем человек? Ну да довольно много. ДОМ..

Что такое структура данных?
Структура данных хранит и извлекает данные. Все, что обеспечивает эти две функции, является структурой данных . Период. Вы можете пропустить оставшуюся часть статьи, если ответ..

мои январские чтения по программированию
Эрик Эллиот Программирование приложения JavaScript Эл Свейгарт «Автоматизируйте скучные вещи с помощью Python» Прогрессивное веб-приложение Google..

Создание ассоциаций секвелизации с помощью инструмента командной строки Sequelize
Sequelize - популярный, простой в использовании инструмент объектно-реляционного сопоставления (ORM) JavaScript, который работает с базами данных SQL. Довольно просто начать новый проект с..

Искусственный интеллект в юридической отрасли - пример прогнозирования судебных решений с помощью глубокого обучения
На протяжении всей истории люди полагались на суды, присяжных, королей и королев в отправлении правосудия. Сегодня способность судов обеспечивать справедливое и быстрое правосудие для своих..

Введение в машинное обучение для обнаружения аномалий (часть 1)
Тщательно созданный, тщательно спроектированный ресурс для специалистов по данным. Часть 1 Главы 03 из Руководства по машинному обучению для обнаружения аномалий Внимание! Прежде чем вы..

Начало работы с Pulumi в Digital Ocean
Цифровой океан (ДО) — отличная альтернатива многим другим поставщикам облачных услуг. DO предоставляет простой и понятный пользовательский интерфейс, упрощающий управление инфраструктурой и..