Usamos cookies para medir audiência e melhorar sua experiência. Você pode aceitar ou recusar a qualquer momento. Veja sobre o iMasters.
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?Carregando comentários...