Php 输入doctype
我有一个Php 输入doctype,php,oop,doctype,Php,Oop,Doctype,我有一个Document类,负责保存最终将被gzip压缩并打印到页面上的文档。在该文档中保存文档的DocType。我面临的问题是如何正确实现显示Doctype 例如:我可以创建一个最常用的流行doctype数组,然后如果输入“strict”,它会自动选择HTML4.01 strict。如果没有已知的DocType,它可能会假定您正在输入自定义DocType,并且只显示您输入的内容。这似乎是一个容易出错且笨拙的问题 $document->setDoctype("strict"); ...
Document
类,负责保存最终将被gzip压缩并打印到页面上的文档。在该文档中保存文档的DocType。我面临的问题是如何正确实现显示Doctype
例如:我可以创建一个最常用的流行doctype数组,然后如果输入“strict”,它会自动选择HTML4.01 strict
。如果没有已知的DocType,它可能会假定您正在输入自定义DocType,并且只显示您输入的内容。这似乎是一个容易出错且笨拙的问题
$document->setDoctype("strict");
..... in a class far, far, away........
function setDocType($type)
{
if(in_array($type, $this->doctypes))
{
$this->doctype = $this->doctypes[$type];
}
else
{
$this->doctype = $type;
}
}
$document->setDoctype(“严格”);
..... 在一个很远很远的班级里。。。。。。。。
函数setDocType($type)
{
if(在数组中($type,$this->doctypes))
{
$this->doctype=$this->doctypes[$type];
}
其他的
{
$this->doctype=$type;
}
}
另一种方法是每次只需输入整个DocType
$document->setDoctype('<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">');
$document->setDoctype(“”);
您将如何处理此问题?是否允许用户输入自定义doctype 也许可以创建一个基类 医生 并将其扩展到每种类型,例如: StrictDoc扩展了Doc 等等
它将为每种类型设置自己的文档类型。如果您想添加到doc类型,只需创建另一个扩展doc的类。我认为您应该签出doctype w3c列表。
这取决于您是否允许输入自定义文档类型。如果认为这种情况是例外,那么当有人尝试使用未定义的DOCTYPE时,可能会抛出异常。您还可以提供定义自定义doctype的方法,并在设置实际doctype之前强制使用该方法 我会这样做:
class Document {
private $doctypes = array(
'html4' => '...',
'xhtml1strict' => '...'
);
private $doctype = null;
public function addCustomDocType($name, $definition) {
if (empty($this->doctypes[$name])) {
$this->doctypes[$name] = $definition;
} else {
throw new Exception('Definition already exists');
}
}
public function setDocType($name) {
if (!empty($this->doctypes[$name])) {
$this->doctype = $this->doctypes[$name];
} else {
throw new Exception('Doctype not found');
}
}
}
第二种必须键入doctype定义的解决方案非常难看,我会避免它。正是我想要的。