класс — PHP: вызвать метод и игнорировать возвращаемый контент

мой первый собственный вопрос о Stackoverflow!

Прежде всего: спасибо за вашу помощь, и извините за мой плохой английский. ^^

Я пытаюсь получить значения, которые метод дочернего класса дает своему методу родительского класса. Проблема в,
что метод родительского класса завершает текущий скрипт exit; + У меня нет доступа к
дочерний класс (классы) + я не хочу редактировать «один класс» (см. ниже).

Код для лучшего понимания:

<?php
// The Controller
class one{
// [...]
public $classVAR = "";
public $classVAR2 = "";

public function render($param1, $param2){
// This are the variables that I need.
$this->classVAR = $param1;
$this->classVAR2 = $param2;

return new View(); // Returns the Page Content
}

public function display($param1, $param2, $exit = true){
echo $this->render($param1, $param2);

if($exit === true){
exit;
}
}
// [...]
}

// Another Class to which I have no control (ex. "Plugin Classes")
class two extends one{
// [...]
public function index(){
// Some other Stuff

//  string  $stuff
//  array   $otherstuff
$this->display($stuff, $otherstuff);
}
// [...]
}
?>

Я попытался прочитать содержание метода index, внутри «два класса».

Так что я поймал источник функции индекса и отделил параметры внутри
$this->display вызов метода.

Проблема: $otherstuff переменная содержит — в большинстве случаев — массив с одним (или более)
пары «ключ => опция», которые могут использоваться классом представления. И «два класса», который я использовал для этого
эксперимент, содержит пару 'something' => $this->loadOptions()и этот метод был защищен.

Я попытался загрузить содержимое, которое возвращается из класса просмотра, в буфер. Но exit; команда
полностью ломает код php и печатает вывод напрямую (а я не хочу выводить из
Класс «Вид»).

Код:

class myclass extends one{
public function myfunc(){
ob_start();
$something = new two();
$something->index();
ob_end_clean();

$param1 = $this->classVAR;
$param2 = $this->classVAR2;
}
}

Можно ли вызвать метод индекса (из «двух классов») временным, без полного перерыва
сквозь exit; линия?

Или можно загрузить класс «два» в буфер и затем манипулировать $this->display
метод? Если да, то я мог бы добавить третий параметр, который отключил бы exit; линия.

Или можно «поменять» родителя двух классов?

У вас есть другая идея, как я могу решить эту проблему? Но, пожалуйста, без экспериментальных кодов PHP,
или дополнительные расширения / библиотеки PHP.

Благодарю вас!
(Я надеюсь, что смогу хорошо объяснить свою проблему.)

Искренне Ваш,
Сэм.

0

Решение

Вы пытались установить значение по умолчанию $ exit в false?

class one{
//...

public function display($param1, $param2, $exit = false){
// ...
}
}

как насчет второго варианта?

Пользовательский класс расширяет два учебный класс

class myclass extends two{

public function display($param1, $param2, $exit = false){
parent::display($param1, $param2, $exit);
}
}

$something = new myclass();
$something->index();
1

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]