<?php
// 声明接口 'Template'
interface Template
{
public function setVariable($name, $var);
public function getHtml($template);
}
// 实现接口
// 这将起作用
class WorkingTemplate implements Template
{
private $vars = [];
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;
}
}
// 这将不起作用
// 致命错误:类 BadTemplate 包含 1 个抽象方法
// 因此必须声明为抽象类 (Template::getHtml)
class BadTemplate implements Template
{
private $vars = [];
public function setVariable($name, $var)
{
$this->vars[$name] = $var;
}
}
?>