Остановка функции родительской функции

66
6

Скажем, в PHP у вас есть класс Parent:

<?php
class Parent {

public function speak()
{
// Do bunch of stuff
$output = outcomeOfAbove();
echo $output;
}

}

И у вас есть класс Child:

<?php
class Child extends Parent{

public function speak()
{
parent::speak();

echo 'Hello from child';
}

}

Теперь позвольте сказать, что я хочу, чтобы содержание $ output в функции Child speak(), есть способ захватить вывод parent :: speak(); и остановить эту функцию от эха? Зная, что вы не можете изменить класс "Родитель".

спросил(а) 2013-03-31T13:00:00+04:00 7 лет, 3 месяца назад
1
Решение
54

Вы можете использовать функцию буферизации вывода PHP:

  public function speak()
{
ob_start();
parent::speak();
$parent_output = ob_get_contents();
ob_end_clean();

echo 'Hello from child';
}

}

Для получения дополнительной информации см. Руководство PHP.net.

Удачи ;)

ответил(а) 2013-03-31T13:15:00+04:00 7 лет, 3 месяца назад
Ваш ответ
Введите минимум 50 символов
Чтобы , пожалуйста,
Выберите тему жалобы:

Другая проблема