我有这门课,我想知道,你认为这是浪费吗?我应该这样做吗?我理解课堂的工作方式以及是什么让他们变得好,但是我(在网站的角度来看)失败了解他们的用途。
<?
class PageHandler {
var $html;
function header () {
$this->html .= "<html>
<head>
<title>Nuclear Summer</title>
</head>
<body>";
}
function footer () {
$this->html .= "
</body>
</html>
";
}
function input ($html) {
$this->html .= $html;
}
function output () {
echo $this->html;
}
}
?>
答案 0 :(得分:1)
您的PageHandler在PHP框架方面类似于“视图”类。您可以为页面实例化它并为其提供更多功能。你正在重用页眉和页脚,所以这通常是一个godd想法。
但你的例子很简单,可以多说一点。
答案 1 :(得分:1)
是
这是一个很糟糕的使用。您正在使用的课程是您应该使用 views (如果您要采用MVC方法,这是一个很好的方法)。
您创建一个主layout
视图,其中包含所有页面共有的代码(例如页眉,页脚),然后您将传入的请求路由到适当的控制器,该控制器使用适当的布局填充布局的“中间”内容。
CodeIgniter是一个很好的PHP框架,可以帮助您掌握MVC。它甚至有documentation on it。
答案 2 :(得分:1)
这是php4的例子,对于php5来说并不常见,这也不是创建输出模板的类的最佳用法,尝试探索Zend Framework它是PHP的{OOP和MVC的好例子http://framework.zend.com/manual/en/ < / p>
php5的代码示例,但仍不是OOP的最佳用法
class PageHandler {
private $html;
private function header () {
$this->html .= "<html>
<head>
<title>Nuclear Summer</title>
</head>
<body>";
}
private function footer () {
$this->html .= "
</body>
</html>
";
}
public function input ($html) {
$this->html .= $html;
}
public function output () {
$this->html = $this->header() . $this->html . $this->footer();
return $this->html;
}
}
$page = new PageHandler();
$page->input('some content');
echo $page->output();
答案 3 :(得分:0)
使用类作为文档构造函数并不是不同寻常的,但我建议对您的类进行一些修改,使其在您的方法中更加有意。看看下面的例子,了解如何class
一点点(lolz)的一些想法。请记住 - 在处理文档输出时,您的constructor
和output buffer
都可以成为好朋友。
<?php
class PageHandler
{
private $html;
function __construct()
{
$this->html = $this->getHeader();
}
private function getHeader()
{
ob_start();
?>
<html>
<head>
<title>Nuclear Summer</title>
</head>
<body>
<?php
return ob_get_clean();
}
private function getFooter()
{
ob_start();
?>
</body>
</html>
<?php
return ob_get_clean();
}
function setBody($html)
{
$this->html .= $html;
}
function getDocument()
{
return $this->html . $this->getFooter();
}
}
?>