logo   OOP -HTML uddata




Nedenfor er vist koden for et tilfældigt PHP OOP-program med HTML-uddata: "catalog.php" - visning af katalog 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
$cat = Url::getParam('category');
if(empty($cat)) {
   require_once("error.php");
} else {
   $objCatalogue = new Catalogue();
   $category = $objCatalogue->getCategory($cat);
   if(empty($category)) {
      require_once("error.php");
   } else {
      $rows = $objCatalogue->getProducts($cat);
      // instantiate paging class
      $objPaging = new Paging($rows, 3);
      $rows = $objPaging->getRecords();

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>Catalogue :: <?php echo $category['name']; ?></h1>
      <?php
      if(!empty($rows)) {
         foreach($rows as $row) {
            ?>
            <div class="catalogue_wrapper">
               <div class="catalogue_wrapper_left">
                  <?php
                  $image = !empty($row['image']) ?
                  $objCatalogue->_path.$row['image'];
                  $objCatalogue->_path.'unavailable.png';
                  $width = Helper::getImgSize($image, 0);
                  $width = $width > 120 ? 120 : $width;
                  ?>
                  <a href="/?page=catalogue-item&category=<?php echo $category['id']; ?>&id=
                  <?php echo $row['id']; ?>"><img src="<?php echo $image; ?>" alt="<?php echo Helper::
                  encodeHtml($row['name'], 1); ?>" width="<?php echo $width; ?>" />
</a>
               </div> // div left slut

               <div class="catalogue_wrapper_right">
                  <h4><a href="/?page=catalogue-item&category=<?php echo $category['id']; ?>
                  &id=<?php echo $row['id']; ?>"><?php echo Helper::encodeHtml($row['name'], 1); ?>

                  </a></h4>
                  <h4>Price: <?php echo Catalogue::$_currency; echo number_format($row['price'], 2); ?>
                  </h4>
                  <p><?php echo Helper::shortenString(Helper::encodeHtml($row['description'])); ?></p>
                  <p><?php echo Basket::activeButton($row['id']); ?></p>
               </div> // div right slut
            </div> // div wrapper slut
            <?php
         } // foreach slut
         echo $objPaging->getPaging();
      } else {
         ?>
         <p>There are no products in this category.</p>
         <?php
      } // if empty rows slut
      require_once("_footer.php");

Footer
</div>
<div class="cl"> </div>
</div>
</div>
<div id="footer">
<div id="footer_in">
&copy; <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
   } // if empty $catalog slut
} // if empty $cat slut
?>




















x
x