Przeglądaj źródła

Simplified Page structure: only needs a build() method.

- Page::__construct() now invokes build() if it exists
- Page::finalizeBody() now invoked automatically during rendering
- Page::render() replaced by __toString()
Frederic G. MARAND 12 lat temu
rodzic
commit
0be8c70e98
1 zmienionych plików z 16 dodań i 25 usunięć
  1. 16 25
      memcache_ui.php

+ 16 - 25
memcache_ui.php

@@ -331,9 +331,18 @@ class Page extends Element {
    */
   public function __construct(Context $context, array $item) {
     parent::__construct('html');
+    $context->setMessage($item, LOG_DEBUG);
     $this->context = $context;
     $this->initializeHead();
     $this->initializeBody();
+    if (method_exists($this, 'build')) {
+      $this->build();
+    }
+  }
+
+  public function __toString() {
+    $html = new Element('html', NULL, $this->getHead() . $this->getBody());
+    return (string) $html;
   }
 
   public function finalizeBody() {
@@ -411,11 +420,6 @@ class Page extends Element {
     $this->setHead(new Element('title', NULL, 'Memcache info'));
   }
 
-  public function render() {
-    $html = new Element('html', NULL, $this->getHead() . $this->getBody());
-    return (string) $html;
-  }
-
   public function setBody($fragment, $region = 'content') {
     if (!in_array($region, $this->getRegions())) {
       $this->context->setMessage(strtr('Attempted to insert data in nonexistent region @region', array(
@@ -436,32 +440,20 @@ class Page extends Element {
 }
 
 class Page_Main extends Page {
-  function finalizeBody() {
-    $hello = new Element('p', NULL, 'Hello world');
-    $this->setBody($hello);
-    parent::finalizeBody();
+  function build() {
+    $this->setBody(new Element('p', NULL, 'Hello world'));
   }
-
 }
 
 class Page_Server_Flush extends Page {
-  public function __construct(Context $context, $item) {
-    parent::__construct($context, $item);
-    $context->setMessage($item, LOG_DEBUG);
-  }
-
-  function finalizeBody() {
-    $hello = new Element('p', NULL, 'Flush server');
-    $this->setBody($hello);
-    parent::finalizeBody();
+  function build() {
+    $this->setBody(new Element('p', NULL, 'Flush server'));
   }
 }
 
 class Page_Slab_Overview extends Page {
-  function finalizeBody() {
-    $hello = new Element('p', NULL, 'Slabs');
-    $this->setBody($hello);
-    parent::finalizeBody();
+  function build() {
+    $this->setBody(new Element('p', NULL, 'Slabs'));
   }
 }
 
@@ -585,8 +577,7 @@ function main() {
     $router = new Router($context);
     $item = $router->getRoute();
     $page = new $item['page class']($context, $item);
-    // echo '<pre>'; var_dump($page);
-    echo $page->render();
+    echo $page;
 
     $html = ob_get_clean();
     if ($context->getTidy()) {