#1
  1. No Profile Picture
    Contributing User
    Devshed Newbie (0 - 499 posts)

    Join Date
    Jan 2006
    Location
    .Canada {border:1px; Temperature: Freezing.}
    Posts
    54
    Rep Power
    9

    Echo page contents of HTML page. Worth it?


    I remember when I first started learning PHP from an old friend of mine, for some reason he was always really proud that he parsed all of his HTML with PHP. Ex;
    PHP Code:
    <?PHP
    echo ("
    <HTML>
    Blah~Blah~Blah
    "
    );
    if
    [
    Situation]
    echo(
    "
    </HTML>
    "
    );
    ?>
    Does this make sense? Anyways, I haven't touched PHP in a long while, and I've forgotten most of what I've learned. Off topic, sorry! I haven't really had any issues with programming like this in the past, but I'm just looking for some insight..

    I've checked Google and most people refer to this with file_get_contents(). Anyways, I was just wondering if there's a difference between the above argument, and the following;

    PHP Code:
    <?PHP
    Include stuff.
    ?>
    <HTML>
    Blah~Blah~Blah
    <?PHP
    if
    [
    Situation]
    echo();
    ?>
    Blah~Blah~Blah
    </HTML>
    Assuming you'd run multiple PHP lines. Sorry if this is a bogus question, but I appreciate the response and the time you're taking in answering.
  2. #2
  3. --
    Devshed Expert (3500 - 3999 posts)

    Join Date
    Jul 2012
    Posts
    3,904
    Rep Power
    1045
    Hi,

    both is bad, because it's a wild mixture of programming logic (PHP) and presentation (HTML). You can do that, and it's still pretty common among amateur programmers, but it leads to complicated spaghetti code and several problems. For example, if you just want to change some HTML, you have to dig deep into the application logic and fumble with the PHP stuff (potentially breaking it). That's obviously a bad solution.

    Modern application strictly separate PHP and HTML by using a template engine like Smarty. All the HTML is put into separate files (templates) and then managed by the PHP scripts.

    Comments on this post

    • ptr2void agrees
  4. #3
  5. No Profile Picture
    Lost in code
    Devshed Supreme Being (6500+ posts)

    Join Date
    Dec 2004
    Posts
    8,296
    Rep Power
    7170
    It's also possible to separate your application logic and presentation logic without using a separate template engine/language. You can use PHP for both, just put them in separate files. PHP was itself designed as a template language, and many PHP programmers feel that using a separate language built on top of PHP, like Smarty, serves no purpose. In fact, most standard PHP frameworks do not use a separate template engine/language, but all of them do separate application logic and presentation.

    When creating presentation templates with PHP it is common to use the alternative syntax for control structures. For example:
    PHP Code:
    <html>
    <?php if(condition): ?>
      <html>
    <?php endif; ?>
    <html>
    PHP FAQ

    Originally Posted by Spad
    Ah USB, the only rectangular connector where you have to make 3 attempts before you get it the right way around
  6. #4
  7. --
    Devshed Expert (3500 - 3999 posts)

    Join Date
    Jul 2012
    Posts
    3,904
    Rep Power
    1045
    Well, that's another topic you could discuss endlessly ...

    The advantage of a separate template engine is that it has all kinds of special template features (like inheritance) and only those. When you use PHP for templates, you're basically limited to if/else and loops. And the separation of programming logic and templates is purely conventional. Nothing prevents you from putting logic into the views and vice versa (and many people tend to do that if they can).

    But using PHP itself is more lightweight, of course. And you don't have to learn another language.

    Anyway, the point I was trying to get at is that you should in fact separate those two things. And I think we all agree on that one ...
  8. #5
  9. No Profile Picture
    Contributing User
    Devshed Newbie (0 - 499 posts)

    Join Date
    Jun 2012
    Posts
    48
    Rep Power
    2
    This is a great, brief tutorial that explains the model-view-controller (MVC) pattern that is popular. It's basically a practical application of the "separation" that E-Oreo and Jacques1 were discussing. Good luck!


    http://coding.smashingmagazine.com/2...hp-templating/


    -Pete
    Laterna Studio - Animation, Web Design, Video Production and Print Design

    Psalm 73: 25-26
  10. #6
  11. Contributing User
    Devshed Novice (500 - 999 posts)

    Join Date
    Sep 2002
    Location
    Seattle, U.S.A.
    Posts
    712
    Rep Power
    12
    I agree with Jaques and E-Oreo, that separating out your html from php is best practices. Definitely read the link about MVC.

    Lots of amazing frameworks out there implement MVC: Codeigniter, Zend, Cake, etc. It's good way to get your feet wet in mvc implementations.

    You don't always control projects your self, and sometimes you inherit messes. One medium step I often use in these cases would be to keep all of your PHP at the top of the page, with just a few echo in the right places in the html. This will keep it a bit clearer. And then in your own code you can implement some templates and not have to figure out how to rebuild all the existing pages.

    e.g.

    PHP Code:
    <?php

    $myclass 
    = new MyClass();
    $navHtml $myClass->generateNavigation();

    $itemsClass = new Items();
    $itemsHtml $itemsClass->generateItemsTable();

    ?>
    <html>
    <head>><head>
    <body>
    <?php echo $navHtml ?>

    <!-- a whole bunhc of html -->

    <?php echo $itemsHtml ?>

    <!-- a whole bunhc of html -->
    </body>
    </html>

IMN logo majestic logo threadwatch logo seochat tools logo