/ / Devuelve el bloque HTML grande con algo de php sin make string - php, html, return

Devuelve el bloque HTML grande con algo de php sin hacer cadena - php, html, return

¿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 № 1

Puede 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; }?>