¿Cómo puedo devolver el bloque html grande con algunos php usando <<<HTML HTML;
.
return <<<HTML
<div>Here some text</div>
<?php thisFunctionEchosomthingNotReturn(); ?>
<?php if($isflag){?>
<span>DO not do this</span>
<?php } ?>
<?php echo $whatever; ?>
HTML;
No puedo entender qué funcionará y qué no. ¿Cómo debo usar este tipo de devolución? <<<HTML HTML;
bloque con alguna variable php que necesito hacer eco y alguna función que haga eco de algo (no volver)
Respuestas
2 para la respuesta № 1Puede utilizar la "salida de captura" para esta tarea. ver Funciones de control de salida
Tengo un código de ejemplo que acabo de probar. Captura la salida de la div Etiqueta en $ out1 y lo muestra de nuevo más tarde.
Esta técnica se utiliza en muchas bibliotecas de "plantillas" y en "vistas" en los "marcos".
<!DOCTYPE html>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<title>Test of Output control functions</title>
</head>
<body>
<?php ob_start(); // capture the buffer ?>
<div style="border: 4px solid red">
<p>This is a test paragraph</p>
<p>This is test PHP code: <?php echo time(); ?></p>
</div>
<?php $out1 = ob_get_contents(); // end capture ?>
</body>
</html>
<?php echo $out1; // output now or save for later. ?>
<?php var_dump($out1, strlen($out1)); ?>
<?php exit; ?>
1 para la respuesta № 2
De acuerdo, la sintaxis de google heredoc para PHP.
pero así es como funciona (lo que creo que estás tratando de hacer).
$html = <<<HTML
<div>
<h1>$phpVariableTitle</h1>
<div>
{$thisFunctionEchosomthingNotReturn()}
</div>
</div>
HTML;
return $html;
Trata eso. ¡IMPORTANTE! La sintaxis heredoc requiere que la etiqueta de cierre se deje alineada sin pestañas. Así que asegúrese de que no haya espacios o pestañas a la izquierda de sus etiquetas heredoc, en este ejemplo, mis etiquetas heredoc se llaman HTML. Además, envolver sus variables / funciones php con llaves es opcional pero es una buena práctica para este método. NO hay etiquetas PHP en bloque heredoc lateral.
Espero que ayude.
Para hacer que una declaración condicional funcione, necesitas usar una función:
class My_Class {
public function myCondition($param) {
if($param === true) {
return "<p>True</p>";
} else {
return "<p>False</p>";
}
}
}
$object =new My_Class();
$html = <<<HTML
<div>
<h1>Conditional Statement</h1>
<div> {$object->myCondition(true)} </div>
</div>
HTML;
Algo así debería funcionar. Pero no lo he probado.
0 para la respuesta № 3
No puedo entender su pregunta correctamente, pero esto puede ayudar:
<HTML>
<div>Here some text</div>
<?php thisFunctionEchosomthingNotReturn();
if($isflag){?>
<span>DO not do this</span>
<?php }//Closing If if it ends here.
echo $whatever; ?>
</HTML>
0 para la respuesta № 4
No puedes escribir estructuras de control / funciones lógicas dentro de HEREDOC
sintaxis.
Vía alternativa ..
<div>Here some text</div>
<?php thisFunctionEchosomthingNotReturn(); ?>
<?php if($isflag){?>
<span>DO not do this</span>
<?php echo $whatever; }?>