Skip to content

Instantly share code, notes, and snippets.

@RalfAlbert
Created March 20, 2012 17:40
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save RalfAlbert/2138508 to your computer and use it in GitHub Desktop.
Save RalfAlbert/2138508 to your computer and use it in GitHub Desktop.
Example 2 for Formatter
<?php
require_once 'class-formatter.php';
class Lister extends Formatter
{
public $templates = array();
public function __construct(){
$this->templates = $this->get_templates();
}
public function get_templates(){
return array(
'ol' => array(
'outer' => "<ol>\n%inner%</ol>\n",
'inner' => "<li>%item%</li>\n"
),
'ul' => array(
'outer' => "<ul>\n%inner%</ul>\n",
'inner' => "<li>%item%</li>\n"
),
'div' => array(
'outer' => "<div>\n%inner%</div>\n",
'inner' => "<p>%item%</p>\n"
),
);
}
public function get_list( $type = '', $data = array() ){
// get templates if not already set
if( empty( $this->templates ) )
$this->get_templates();
// check if the requested list-typ is defined
if( ! in_array( $type, array_keys( $this->templates ) ) )
return FALSE;
// create list
$inner = new stdClass();
$values = new stdClass();
foreach( $data as $key => $value ){
$values->key = $key;
$values->item = $value;
$inner->inner .= self::sprintf( $this->templates[$type]['inner'], $values );
}
return self::sprintf( $this->templates[$type]['outer'], $inner );
}
}
$data = array( 'Eins', 'Zwei', 'Drei' );
$list = new Lister();
echo $list->get_list( 'ol', $data );
echo $list->get_list( 'ul', $data );
echo $list->get_list( 'div', $data );
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment