Simple-Templates: The Demo
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
<?php | |
class Template_Engine_Test | |
{ | |
/** | |
* | |
* Container for the different template-engines | |
* @var object $template_engine | |
*/ | |
public static $template_engine; | |
/** | |
* | |
* Initial some vars | |
*/ | |
public function __construct(){ | |
// initialize the template-engine to avoid strict errors | |
self::$template_engine = new stdClass(); | |
} | |
/** | |
* | |
* Caching for the template-classes | |
* Create a WP-Error if the template-engine could not be initialize | |
* @param string $template_engine The requested template-engine | |
* @return object The requested template-engine if available | |
*/ | |
protected function get_template_engine( $template_engine ){ | |
$template_engine = strtolower( $template_engine ); | |
// available template-engines and the template-classes | |
$available_template_engines = array( | |
'html' => array( 'WP_Simple_HTML', 'WP_Simple_HTML_Templates' ) | |
); | |
$available_template_engines = apply_filters( 'available_template_engines', $available_template_engines ); | |
// check if the requested template-engine is available. if not, try to create it | |
if( ! isset( self::$template_engine->$template_engine ) ){ | |
if( ! isset( $available_template_engines[$template_engine] ) ){ | |
return new WP_Error( 'template_engine', 'Unknown template-engine <strong>' . $template_engine . '</strong>' ); | |
} else { | |
$tmpl_ng = &$available_template_engines[$template_engine]; | |
$class = &$tmpl_ng[0]; | |
$template = &$tmpl_ng[1]; | |
self::$template_engine->$template_engine = new $class( new $template ); | |
} | |
} | |
return self::$template_engine->$template_engine; | |
} | |
/** | |
* | |
* The output | |
*/ | |
public function output( $stream ){ | |
$output = $this->get_template_engine( $stream ); | |
if( is_wp_error( $output ) ) | |
die( $output->get_error_message() ); | |
$output->print_headline( strtoupper( $stream ) ); | |
$list = $output->get_list( 'ol', array( 'eins', 'zwei', 'drei' ) ); | |
echo $list; | |
} | |
/** | |
* | |
* Setup html-mode | |
*/ | |
public function set_html(){ | |
// html is build in | |
} | |
/** | |
* | |
* Setup xml-mode | |
*/ | |
public function set_xml(){ | |
add_filter( 'available_template_engines', array( &$this, 'add_xml' ), 1, 0 ); | |
} | |
/** | |
* | |
* Add the XML-Template-Engine | |
*/ | |
public function add_xml(){ | |
return array( | |
'xml' => array( 'WP_Simple_HTML', 'WP_Simple_HTML_Templates' ), | |
); | |
} | |
public function set_feed(){ | |
add_filter( 'available_template_engines', array( &$this, 'add_feed' ), 1,1 ); | |
} | |
public function add_feed( $template_engines ){ | |
$feed_engines = array( | |
'rss' => array( 'WP_Simple_HTML', 'WP_Simple_HTML_Templates' ), | |
'atom' => array( 'WP_Simple_HTML', 'WP_Simple_HTML_Templates' ), | |
); | |
return array_merge( $template_engines, $feed_engines ); | |
} | |
} | |
$html = new Template_Engine_Test(); | |
$html->set_html(); | |
$html->output( 'html' ); | |
$xml = new Template_Engine_Test(); | |
$xml->set_xml(); | |
$xml->output( 'xml' ); | |
$feed = new Template_Engine_Test(); | |
$feed->set_feed(); | |
$feed->output( 'rss' ); | |
$feed->output( 'atom' ); | |
$bar = new Template_Engine_Test(); | |
$bar->output( 'wallawalla' ); |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment