|   OOP - HTML inddata
 
 
 Nedenfor er vist koden for et tilfældigt PHP OOP-program med HTML-uddata: ".php" - visning af !!! i e-handels site. 
 Programmet er underopdelt i fem grupper: 
Top Den del, der er placeret før Header.Delen bruges til programspecifik PHP-kode. Den vil typisk indeholde instantiering af klasser, der er grundlæggende for programmet, og kode knyttet dertil.
 Uden at det kan ses vil extendede klasser også indgå.
 Top-data udføres før serveren påbegynder opbygning af HTML-siden.
Header Den del, der via include indgår i alle programmer.
 
Vil typisk indeholde 3 grupper kode:- Over HTML-koden vil typisk være placeret PHP-kode til instantiering etc. af de aktiviteter, der skal udeføres i Headeren: F.eks. menu.- Den normale DOCTYPE og Head-del.- Den repetitive del af siden. Den vil oftest være en blanding af HTML-kode og OOP-kode til hentning af de databasebaserede data, der skal vises.Side Den del, der indeholder sidens brødtekst.Den primære præsentation af HTML- og OOP-styrede data.
Footer Den del, der via include indgår i alle programmer.Typisk som side, men med meget færre både HTML- og OOP-data.
Bund Den kode, der er placeret efter Footer.Der vil ofte ikke være data i denne del.
 
 Ved udviklingen af en side vil det være nødvendigt at "tænke baglæns og så vidt muligt udvikle forlæns": Man designer siden så godt som muligt på rough-niveau incl. afklarer, hvilke data, der skal vises / indlægges. Derefter tænker man stadig baglæns over, hvor dataene skal komme fra, og derfra - for de data, der er afhængige af andre - afklares forholdene omkring de afhængige sata etc. Arbejdet slutter ideelt set først når man kan begynde at etablere de yderste data / den yderste kode - medmindre de allerede findes. Med den nødvendige struktur på plads og kørende nedefra kan man så arbejde sig op mod et godt slutresultat. 
 | Top <?php
 Login::restrictFront();
 
 $objUser = new User();
 $user = $objUser->getUser(Session::getSession(Login::$_login_front));
 
 if (!empty($user)) {
 
 $objForm = new Form();
 $objValid = new Validation($objForm);
 
 if ($objForm->isPost('first_name')) {
 
 $objValid->_expected = array(
 'first_name',
 'last_name',
 'address_1',
 'address_2',
 'town',
 'county',
 'post_code',
 'country',
 'email'
 );
 
 $objValid->_required = array(
 'first_name',
 'last_name',
 'address_1',
 'town',
 'county',
 'post_code',
 'country',
 'email'
 );
 
 $objValid->_special = array(
 'email' => 'email'
 );
 
 if ($objValid->isValid()) {
 
 if ($objUser->updateUser($objValid->_post, $user['id'])) {
 Helper::redirect('/?page=summary');
 } else {
 $mess  = "<p class=\"red\">There was a problem updating your details.<br />";
 $mess .= "Please contact administrator.</p>";
 }
 }
 }
 
 
 | Header <?php
 $objCatalogue = new Catalogue();
 $cats = $objCatalogue->getCategories();
 $objBusiness = new Business();
 $business = $objBusiness->getBusiness();
 ?>
 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "
 http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
 <html xmlns="http://www.w3.org/1999/xhtml">
 <head>
 <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
 <title>Ecommerce website project</title>
 <meta name="description" content="Ecommerce website project" />
 <meta name="keywords" content="Ecommerce website project" />
 <meta http-equiv="imagetoolbar" content="no" />
 <link href="/css/core.css" rel="stylesheet" type="text/css" />
 </head>
 <body>
 <div id="header">
 <div id="header_in">
 <h5><a href="/"><?php echo $business['name']; ?></a></h5>
 <?php
 if (Login::isLogged(Login::$_login_front)) {
 echo '<div id="logged_as">Logged in as: <strong>';
 echo Login::getFullNameFront(Session::getSession(Login::$_login_front));
 echo '</strong> | <a href="/?page=orders">My orders</a>';
 echo ' | <a href="/?page=logout">Logout</a></div>';
 } else {
 echo '<div id="logged_as"><a href="/?page=login">Login</a></div>';
 }
 ?>
 </div>
 </div>
 <div id="outer">
 <div id="wrapper">
 <div id="left">
 <?php require_once('basket_left.php'); ?>
 <?php if (!empty($cats)) { ?>
 <h2>Categories</h2>
 <ul id="navigation">
        ;<?php
 foreach($cats as $cat) {
 echo "<li><a href=\"/?page=catalogue&category=".$cat['id']."\"";
 echo Helper::getActive(array('category' => $cat['id']));
 echo ">";
 echo Helper::encodeHtml($cat['name']);
 echo "</a></li>";
 }
 ?>
 </ul>
 <?php } ?>
 </div>
 
 <div id="right">
 | 
 Side
 require_once('_header.php');
 ?>
 
 <h1>Checkout</h1>
 
 <p>Please check your details and click <strong>Next</strong>.</p>
 
 <?php echo !empty($mess) ? $mess : null; ?>
 
 <form action="" method="post">
 <table cellpadding="0" cellspacing="0" border="0" class="tbl_insert">
 
 <tr>
 <th><label for="first_name">First name: *</label></th>
 <td>
 <?php echo $objValid->validate('first_name'); ?>
 <input type="text" name="first_name"
 id="first_name" class="fld"
 value="<?php echo $objForm->stickyText('first_name', $user['first_name']); ?>" />
 </td>
 </tr>
 
 <tr>
 <th><label for="last_name">Last name: *</label></th>
 <td>
 <?php echo $objValid->validate('last_name'); ?>
 <input type="text" name="last_name"
 id="last_name" class="fld"
 value="<?php echo $objForm->stickyText('last_name', $user['last_name']); ?>" />
 </td>
 </tr>
 
 <tr>
 <th><label for="address_1">Address 1: *</label></th>
 <td>
 <?php echo $objValid->validate('address_1'); ?>
 <input type="text" name="address_1"
 id="address_1" class="fld"
 value="<?php echo $objForm->stickyText('address_1', $user['address_1']); ?>" />
 </td>
 </tr>
 
 <tr>
 <th><label for="address_2">Address 2:</label></th>
 <td>
 <?php echo $objValid->validate('address_2'); ?>
 <input type="text" name="address_2"
 id="address_2" class="fld"
 value="<?php echo $objForm->stickyText('address_2', $user['address_2']); ?>" />
 </td>
 </tr>
 
 <tr>
 <th><label for="town">Town: *</label></th>
 <td>
 <?php echo $objValid->validate('town'); ?>
 <input type="text" name="town"
 id="town" class="fld"
 value="<?php echo $objForm->stickyText('town', $user['town']); ?>" />
 </td>
 </tr>
 
 <tr>
 <th><label for="county">County: *</label></th>
 <td>
 <?php echo $objValid->validate('county'); ?>
 <input type="text" name="county"
 id="county" class="fld"
 value="<?php echo $objForm->stickyText('county', $user['county']); ?>" />
 </td>
 </tr>
 
 <tr>
 <th><label for="post_code">Post code: *</label></th>
 <td>
 <?php echo $objValid->validate('post_code'); ?>
 <input type="text" name="post_code"
 id="post_code" class="fld"
 value="<?php echo $objForm->stickyText('post_code', $user['post_code']); ?>" />
 </td>
 </tr>
 
 <tr>
 <th><label for="country">Country: *</label></th>
 <td>
 <?php echo $objValid->validate('country'); ?>
 <?php echo $objForm->getCountriesSelect($user['country']); ?>
 </td>
 </tr>
 
 <tr>
 <th><label for="email">Email address: *</label></th>
 <td>
 <?php echo $objValid->validate('email'); ?>
 <input type="text" name="email"
 id="email" class="fld"
 value="<?php echo $objForm->stickyText('email', $user['email']); ?>" />
 </td>
 </tr>
 
 <tr>
 <th> </th>
 <td>
 <label for="btn" class="sbm sbm_blue fl_l">
 <input type="submit"
 id="btn" class="btn" value="Next" />
 </label>
 </td>
 </tr>
 
 </table>
 </form>
 
 <?php
 require_once('_footer.php');
 
 
 | Footer </div>
 <div class="cl"> </div>
 </div>
 </div>
 <div id="footer">
 <div id="footer_in">
 © <a href="http://www.sebastiansulinski.co.uk" title="Web Design Tutorials"
 target="_blank">Sebastian Sulinski</a>
 </div>
 </div>
 <script src="/js/jquery-1.4.2.min.js" type="text/javascript"></script>
 <script src="/js/basket.js" type="text/javascript"></script>
 </body>
 </html>
 | 
 Bund
 } else {
 Helper::redirect('/?page=error');
 }
 ?>
 
 | 
  
         
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 |