PHP Classes

File: demo/demo.php

Recommend this page to a friend!
  Classes of Roger Baklund  >  PHP Layout Template Processor  >  demo/demo.php  >  Download  
File: demo/demo.php
Role: Example script
Content type: text/plain
Description: Demo script
Class: PHP Layout Template Processor
Template engine with indented blocks based syntax
Author: By
Last change:
Date: 6 years ago
Size: 1,599 bytes
 

Contents

Class file image Download
<?php
# demo
error_reporting(E_ALL);
ini_set('display_errors',1);

require
'../LayoutProcessor.class.php';

# These constants are only used by this demo
define('DEBUG_MODE', 1);
define('SCRIPT_IDENTITY','DemoViewer'); # only used for error messages
define('SCRIPT_EXTENSION','.demo.txt');
define('LOGFILE','demo.log');

class
Demo extends LayoutProcessor {
  const
ERR_MSG_INTRO = 'Demo ERROR: ';
  static function
load($layout_name) {
   
$fn = $layout_name.SCRIPT_EXTENSION;
    if(!
file_exists($fn)) return false;
   
$content = file_get_contents($fn);
    return array(
'content'=>$content,'name'=>$fn,'parent'=>basename(__FILE__),'id'=>SCRIPT_IDENTITY);
  }
  static function
get($layout_name) {
    if(
DEBUG_MODE) {
      global
$logger;
     
$parent = isset(static::$layouts[$layout_name]) ?
        static::
$layouts[$layout_name]['parent'].':'.
        static::
$layouts[$layout_name]['id'] : $layout_name.SCRIPT_EXTENSION;
     
$logger('DEBUG',str_repeat(' ',count(static::$scope)).$layout_name.($parent ? " ($parent)" : ''));
    }
    return
parent::get($layout_name);
  }
}

# Show errors in HTML format and write them to log file
Demo::on_error(Demo::ERR_HTML | Demo::ERR_LOG);

$logger = function ($context,$msg) {
 
error_log(date('Y-m-d H:i:s')." $context: $msg\n",3,LOGFILE);
};

if(!
Demo::set_logger($logger))
  die(
'* Could not set a logger, not a valid callable!');

$start = microtime(true);
echo
Demo::run_layout('script'); # runs script.demo.txt, see load() method
$stop = microtime(true);

if(
DEBUG_MODE)
 
$logger('DEBUG',sprintf('Time spent: %.3f s',$stop-$start));