Output buffering retornando string vazia quando executado com duas instancias da mesma classe
Olá galera, eu estou tendo um problema que está me aflingindo muito, nunca vi algo assim, eu estou desenvolvendo algumas classes para trabalhar com WordPress e estou usando Output Buffering para gerar as saidas dos meus templates em meus plugins, porem, estou enfrentando um problema quando tento executar um método render de um mesmo tipo, o que acontece é que o PHP me retorna uma string vazia apos a chamada da primeira instancia.
View.php:
<?php
namespace App\Core;
class View
{
/**
* Renderiza uma view
* @param string $path
* @param array $data
*/
public static function render($path, $data = [])
{
ob_start();
extract($data);
include_once ROOT_PATH . '/views/' . $path . '.php';
return ob_get_clean();
}
}
Input.php
<?php
namespace App\Core\Fields;
use App\Core\Field;
use App\Core\View;
class Input implements Field
{
...
public function render()
{
return View::render('fields/input', [
'key' => $this->getKey(),
'label' => $this->getLabel(),
'type' => $this->getType(),
'value' => $this->getValue()
]);
}
}
O código client:
$f1 = new Input('athlete_address', 'Endereço', 'text');
$f2 = new Input('athlete_birthdate', 'Data de nascimento', 'date');
$f1->render(); // Retorna saida normal
$f2->render(); // Retorna string vazia
Porém se eu fizer assim...
$select = (new Select('athlete_category', 'Categoria'))
->addOption('Open', 'Open')
->addOption('Master', 'Master');
$f1 = new Input('athlete_address', 'Endereço', 'text');
$f2 = new Input('athlete_birthdate', 'Data de nascimento', 'date');
$f1->render(); // Retorna saida normal
$f2->render(); // Retorna string vazia
$select->render(); // Retorna saida normal
Codigo da classe Select.php
<?php
namespace App\Core\Fields;
use App\Core\Field;
use App\Core\View;
class Select implements Field{
public function render()
{
return View::render('fields/select', [
'key' => $this->getKey(),
'label' => $this->getLabel(),
'options' => $this->getOptions(),
'value' => $this->getValue()
]);
}
}
As classes Input.php e Select.php compartilham de uma interface comum, porem quando eu tento renderizar uma segunda instancia de Input o que eu recebo é uma string vazia, o que pode ser isso?Discussão (1)
Carregando comentários...