2010-11-25 2 views
8

Я изучаю PHP (без программирования) из книги. В примерах в книге используется странный способ вывода большого блока HTML условно. Он закрывает тег PHP внутри условного выражения и снова открывает его после вывода HTML. Я понимаю (после некоторой царапины на голове), как это работает, но это похоже на изворотливое, не предназначенное для использования, подобное, обходное решение.Правильный способ вывода большого блока HTML в PHP

<?php 
    if(something == somethingelse) { 
     echo "some message"; 
    } 
    else { 
?> 
<big-block-of-html> 
</big-block-of-html> 
<?php } 
?> 

В книге действительно представлен синтаксис heredoc, но он никогда не использовался. Есть ли правильный способ сделать это? Казалось бы, более интуитивно понятно выводить HTML из PHP.

+2

Да, является действительным. Есть много похожих вопросов, например http://stackoverflow.com/questions/2788891/strange-php-syntax и этот http://stackoverflow.com/questions/2333779/whats-this-kind-of-syntax- in-php и ... http: //stackoverflow.com/search? q = php + синтаксис – ajreal 2010-11-25 12:08:13

+2

Стоит отметить, что существует множество способов печати HTML (интересная проблема сама по себе), но закрытие режима PHP из условного является широко известным и широко распространенным синтаксическим признаком, а не обходным путем. – 2010-11-25 12:11:26

+2

Кстати, это может быть проще понять, если вы подумаете об этом по-другому: PHP начал как и в основном способ * встроить язык сценариев в HTML. * Только в вашем случае есть больше PHP-кода, чем HTML, поэтому баланс отменяется. – deceze 2010-11-25 14:45:09

ответ

11

Это именно то, как PHP предполагается использовать и гораздо более удобным для чтения , элегантный и надежный, чем все альтернативы *. Я бы просто пойти на более отступом стиль:

<?php 
    // normal 
    // code 
    // here 
?> 
<?php if ($foo) : ?> 

    <div> 
     <!-- more HTML --> 
    </div> 

<?php endif; ?> 

* Если вы не пойти полностью кода свободных шаблонов, таких как Smarty конечно ...

0

PHP допускает несколько способов сделать это; выбор одного из них в основном зависит от предпочтения - для некоторых это самый читаемый вариант, для некоторых это ужасный взлом.

В целом, встроенный HTML трудно поддерживать в любой форме - если вы предпринимаете какие-либо серьезные усилия на своем веб-сайте, рассмотрите какую-то систему шаблонов (например, Smarty) и/или фреймворк (например, Symfony), иначе вы «Я схожу с ума от попытки поддерживать суп с PHP + HTML.

+0

Спасибо. В настоящее время я на относительно раннем этапе обучения. Я намерен изучить структуру, но сначала хочу познакомиться с основами. – ntc 2010-11-25 12:10:39

1

Подумайте о том, чтобы скрыть этот блок в другом файле. Тогда вы можете создать некоторую функцию, как это:

function get_some_big_block_content() 
{ 
    return get_file_contents('./your_big_block.html'); 
} 

Тогда вы можете:

<?php 
    if(something == somethingelse) { 
     echo "some message"; 
    } 
    else { 
     echo get_some_big_block_content(); 
    } 

?> 
-1

Использование

<?php 
    if (something == somethingelse) { 
     echo "some message"; 
    } 
    else { 
     echo "<big-block-of-html> 
     </big-block-of-html>"; 
    } 
?> 
Смежные вопросы