/** * @return void * @param array $arr - hash^2 of values * @param string $block_name - block name * @param Template $tpl - link to TPL object ($app->tpl OR $parser->tpl) that will be used for parsing * @desc parse dynamic list data */ function __dynamicListHandler($arr, $block_name, &$tpl) { global $app; $this->buffer = 'dynamic_view'; $list_name = $block_name; $row_name = $block_name . '_row'; $element_name = $block_name . '_element'; $caption_row_name = $block_name . '_caption_row'; $caption_element_name = $block_name . '_caption_element'; $add = $this->__getAddVariables(); // make captions line if (arrayIsOk($this->list_columns)) { foreach ($this->list_columns as $key => $value) { if (arrayIsOk($value)) { foreach ($value as $key2 => $value2) { $cap_arr[$key2] = $value2; } $cap_arr['ELEMENT_NAME'] = $key; } else { $cap_arr = array('ELEMENT' => $value, 'ELEMENT_NAME' => $key); } $tpl->parseVariable($cap_arr, $caption_element_name); } $tpl->setCurrentBlock($caption_row_name); if (arrayIsOk($this->list_columns_add_variables)) { $tpl->setVariable($this->list_columns_add_variables); unset($this->list_columns_add_variables); } $tpl->parseCurrentBlock(); } if (arrayIsOk($this->fields)) { $i = 1; foreach ($arr as $row) { foreach ($row as $key => $value) { // make decoration if ($this->list_decoration1 != '' && $this->list_decoration2 != '') { if ($i % 2 == 1) { $tpl->setVariable('decoration', $this->list_decoration1); } else { $tpl->setVariable('decoration', $this->list_decoration2); } } if ($this->fields[$key] != '') { // DATA field if ($this->fields[$key] != 'hidden' && $key != 'id') { $this->setElement($key, $this->fields[$key]); $value = $this->makeElementView($value, $row['id']); $insert_array = array('ELEMENT' => $value, 'ID' => $row['id']); $tpl->parseVariable($insert_array, $element_name); } } else { // not DATA field if ($key != 'id') { $tpl->parseVariable(array('ELEMENT' => $value), $element_name); } } } $row = array_merge($row, $add); $tpl->parseVariable($row, $row_name); $i++; } } else { $i = 1; foreach ($arr as $row) { foreach ($row as $key => $value) { // make decoration if ($this->list_decoration1 != '' && $this->list_decoration2 != '') { if ($i % 2 == 1) { $tpl->setVariable('decoration', $this->list_decoration1); } else { $tpl->setVariable('decoration', $this->list_decoration2); } } $tpl->parseVariable(array('ELEMENT' => $value), $element_name); } $row = array_merge($row, $add); $tpl->parseVariable($row, $row_name); $i++; } } $tpl->setCurrentBlock($list_name); if (isset($this->caption_variables)) { $tpl->setVariable($this->caption_variables); } // Paging if ($app->paging) { $tpl->setVariable(array('PAGING' => $this->makePaging())); } $tpl->parseCurrentBlock(); $this->__clearAddVariables(); $this->__clearListDecoration(); $this->buffer = ''; }
if ($granted) { try { $sql->beginTransaction(); $statement = "INSERT INTO visits (link) VALUES(:link)"; $query = $sql->prepare($statement); $query->execute(array('link' => currentPage())); $sql->commit(); } catch (Exception $e) { $sql->rollBack(); } $variables = new Template($sql); $query = $sql->prepare("SELECT * FROM ini WHERE lang = :lang OR lang = 'ALL';"); $query->execute(array(':lang' => 'FR')); $results = $query->fetchAll(); foreach ($results as $result) { $variables->setVariable($result['key'], $result['value']); } $i = 0; $keys = array_keys($_GET); foreach ($_GET as $var) { $variables->setVariable($keys[$i], $var); $i++; } $variables->setVariable('lang', 'FR'); ?> <html> <head> <?php $variables->getHtml('./view/head.php'); ?> </head>
<?php //使用接口(interface),你可以指定某个类必须实现哪些方法,但不需要定义这些方法的具体内容。 //接口中定义的所有方法都必须是public,这是接口的特性。 //声明一个'iTemplate'接口。 interface iTemplate { public function setVariable($name, $var); public function getHtml(); } class Template implements iTemplate { private $vars = array(); // $var = {"1"=>"hh", "2"=>"jj"}; public function setVariable($name, $var) { $this->vars[$name] = $var; } public function getHtml() { foreach ($this->vars as $name => $value) { print_r($value); } echo "<br>"; print_r($name); //"2" } } $foo = new Template(); $foo->setVariable("{2,3,4}", "{'jj','kk','ii'}"); $foo->getHtml();
{ private $vars = array(); public function setVariable($name, $var) { $this->vars[$name] = $var; } public function getHtml($template) { foreach ($this->vars as $name => $value) { $template = str_replace('{' . $name . '}', $value, $template); } return $template; } } $oTemplate = new Template(); $oTemplate->setVariable('emailid', 'welcomeEmail'); $oTemplate->setVariable('firstname', 'welcomeEmail'); echo "\n\n"; echo $oTemplate->getHtml('*****@*****.**'); echo "\n\n"; echo $oTemplate->getHtml('Dhananjay'); echo "\n\n"; die('to check abstract class'); // This will not work // Fatal error: Class BadTemplate contains 1 abstract methods // and must therefore be declared abstract (iTemplate::getHtml) class BadTemplate implements iTemplate { private $vars = array(); public function setVariable($name, $var) {
session_start(); define('DB_NAME', 'dream'); define('DB_USER', 'da'); define('DB_PASSWORD', 'dream-admin2015'); include_once './include/DBF.php'; include_once './include/functions.php'; include_once './controller/template.php'; include_once './controller/menu.php'; $variables = new Template(); $myDB = new DBFactory(); $sql = $myDB->getMysqlConnexionWithPDO(); $query = $sql->prepare("SELECT * FROM ini WHERE lang = :lang OR lang = 'ALL';"); $query->execute(array(':lang' => 'FR')); $results = $query->fetchAll(); foreach ($results as $result) { $variables->setVariable($result['key'], $result['value']); } $variables->setVariable('tab_title', 'Panneau d\'administration'); $variables->setVariable('header', '<h1>Panneau d\'administration</h1>'); $user = '******'; $logged = false; $role = 0; if (notNull($_SESSION) && notNull($_SESSION['logged'])) { $logged = $_SESSION['logged'] != 'NOT_LOGGED'; $role = $_SESSION['role']; $user = $_SESSION['user']; } if ($logged && $role >= 3) { ?> <!DOCTYPE html> <html>