Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

separating php and html... why?

So I have seen some comments on various web sites, pages, and questions I have asked about separating php and html.

I assume this means doing this:

<?php

myPhpStuff();

?>

<html>

<?php

morePhpStuff();

?>

Rather than:

<?php

    doPhpStuff();

    echo '<html>';

    ?>

But why does this matter? Is it really important to do or is it a preference?


Also it seems like when I started using PHP doing something like breaking out of PHP in a while loop would cause errors. Perhaps this is not true anymore or never was.


I made a small example with this concept but to me it seems so messy:

<?php

$cookies = 100;
while($cookies > 0)
{
    $cookies = $cookies -1;
?>
    <b>Fatty has </b><?php echo $cookies; ?> <b>cookies left.</b><br>

<?php

} 

?>

Are there instances when it is just better to have the HTML inside the PHP?

<?php

$cookies = 100;
while($cookies > 0)
{
    $cookies = $cookies -1;

    echo'<b>Fatty has </b> '.$cookies.' <b>cookies left.</b><br>';
} 

?>
like image 254
ian Avatar asked May 31 '09 08:05

ian


1 Answers

When people talk about separating PHP and HTML they are probably referring to the practice of separating a website's presentation from the code that is used to generate it.

For example, say you had a DVD rental website and on the homepage you showed a list of available DVDs. You need to do several things: get DVD data from a database, extract and/or format that data and maybe mix some data from several tables. format it for output, combine the DVD data with HTML to create the webpage the user is going to see in their browser.

It is good practice to separate the HTML generation from the rest of the code, this means you can easily change your HTML output (presentation) without having to change the business logic (the reading and manipulation of data). And the opposite is true, you can change your logic, or even your database, without having to change your HTML.

A common pattern for this is called MVC (model view controller). You might also want to look at the Smarty library - it's a widely used PHP library for separating presentation and logic.

like image 95
Steve Claridge Avatar answered Sep 20 '22 23:09

Steve Claridge