cz | en | fr    jazyk: cz
 

<?phpArchitecte


phpArchitecte [pi.aš.pí aršitekt] je prototyp frameworku s modelem komponent, který odděluje prezentační vrstvu. Framework není určen pro široké použítí, spíše se jedná o implementačně a architektonicky zajímavý problém, který řeším. Implementace frameworku je v PHP5.

Popis funkčnosti

Předpokládejme požadavek na domovskou stránku aplikace, framework ji zaregistruje a následně provede:

  • načtení šablony home.page
  • najde v šabloně komponenty a inicializuje je ve formě instancí
  • vytvoří instanci třídy, která definuje chování komponent na stránce
  • vykreslí komponenty do stránky, kterou později zobrazí
Tyto kroky popisuje následující metoda:

<?php
  
class Framework
  
{
      
public static function run()
      {
          
// validate page request  
          
self::request();
          
          
// compose name of page and class    
          
$pageFile PROJECT_PAGES "/" self::$page __PAGE_EXT;
          
$classFile PROJECT_CLASSES "/" self::$page __PHP_EXT;
          
          
// include class
          
require_once $classFile;
          
          
// compile a page
          
$c = new TCompiler($pageFile);
          
          
// create an instance of page class
          
new self::$page($c->getComponents());
          
          
// render component into stream
          
foreach ($c->getComponents() as $com) {
              
$render $com->render();
              
$compiled_id $com->getCompiled();
              
              
TStream::replaceCompiledComponent($compiled_id$render);
          }
      }
      . ..
  }
?>

Šablony

Šablony jsou soubory obsahující HTML kód, který je doplněn o jazyk komponent, který popisuje vizualní nebo nevizuální komponenty na stránce a definuje jejich vlastnosti.

Šablonu si můžeme představit třeba takto:

<:include file="head.page">

  <h2>Contact form</h2>
  <hr>

  <com:TLabel id="answer">
  
  <com:TForm>
    Your name:
    <com:TInput name="firstname" id="firstname">
    
    
    Age: 
    <com:TInput name="age" id="age">
    
    <com:TSubmitButton value="Send form">
  <com:/TForm>

  <br>  
  <a href="index.php?page=one">Jump to page one</a>
     
<:include file="tail.page">

Instance stránky

Každá šablona má stejnojmennou třídu, která definuje chování komponent na stránce. Instance této třídy má přístup ke všem komponentám, které byly inicializovány.

Třída definující chování stránky může vypadat takto:

<?php
  package
("gui.html.*");
  
  class 
home extends TPage
  
{
      
public function run()
      {
          if (isset(
$_POST["firstname"])) {
              
$this->answer->text "Thank you " $_POST["firstname"] . "!";
              
              if (
$_POST["age"] < 15) {
                  
$this->answer->text .= "you are kid!";
              } else
                  
$this->answer->text .= "<br>you are realy old!";
          }
      }
  }
?>

Download

Ke stažení jsou zdrojové kódy.



www.juhanak.cz | petrjuhanak.cz
2014