2

我知道这<?php include 'filename.php';?>可用于跨多个页面复制静态内容。

我以前为一些以前的网站做过这个,但是我正在尝试制作一个更专业的网站,我不确定在很多地方打点 <?php include是一个很好的方法,感觉就像胶水一样。

这是专业人士的做法吗?我问这个是因为我所有的页面最终都有一个include标题、页眉、页脚和导航。

如果没有更好或更清洁的方法,我会继续,但如果人们有更好的方法来管理这个,我想知道。

干杯

4

3 回答 3

1

许多专业人士使用模板库。这是一种更面向对象的方式来做你正在谈论的事情。这个想法是,您可以将内容分解成更小的可重复使用的部分以及一些添加动态内容的方法,然后构建网页非常简单。

如果您想自己动手,请考虑制作如下所示的 php 类:

<?php

class Link
{
public $relation;
public $type;
public $href;

public function __construct($relation, $type, $href)
{
    $this->relation = $relation;
    $this->type = $type;
    $this->href = $href;
}

public function __toString()
{
    return "<link rel='$this->relation' type='$this->type' href='$this->href'>";
}
}

class Anchor
{
public $href;
public $content;

public function __construct($href, $content)
{
    $this->href = $href;
    $this->content = $content;
}

public function __toString()
{
    return "<a href='$this->href'>$this->content</a>";
}
}

class Script
{
public $source;
public $type;

public function __construct($source, $type)
{
    $this->source = $source;
    $this->type = $type;
}

public function __toString()
{
    return "<script src='$this->source' type='$this->type'></script>";
}
}

class Option
{
public $value;
public $text;

public function __construct($value, $text)
{
    $this->value = $value;
    $this->text = $text;
}

public function __toString()
{
    return "<option value='$this->value'>$this->text</option>";
}
}

class Select
{
public $options;
public $name;

public function __construct($name, $options)
{
    $this->name = $name;
    $this->options = $options;
}   

public function __toString()
{
    $result = "<select id='$this->name'>";
    foreach($this->options as $option)
        $result.=$option;
    $result.= "</select>";
    return $result;
}
}

class Div
{
public $id;
public $class;
public $content;

public function __construct($id, $class, $content)
{
    $this->id = $id;
    $this->class = $class;
    $this->content = $content;
}

public function __toString()
{
    return "<div id='$this->id' class='$this->class'>$this->content</div>";
}
}


class HeaderItem
{
public $title;
public $links;

public function __construct($title, $links)
{
    $this->title = $title;
    $this->links = $links;  
}

public function __toString()
{
    $result = "<head>"."<title>$this->title</title>";
    foreach($this->links as $link)
        $result.= $link;
    $result.= "</head>";
    return $result;
}
}

class Document
{
public $header;
public $body;

public function __construct($header, $body)
{
    $this->header = $header;
    $this->body = $body;
}

public function __toString()
{
    return "<!DOCTYPE HTML>$this->header<html><body>$this->body</body></html>";
}

}
?>
于 2013-06-24T14:32:41.293 回答
0

看看 MVC 编程。

包含通常是您如何在文档中包含页眉或页脚等。但在大型项目中,您通常会创建一个包含标题和任何动态信息的类。然后它将返回解析的结果。

http://en.wikipedia.org/wiki/Model%E2%80%93view%E2%80%93controller

于 2013-06-24T14:30:24.463 回答
0

正如@AdamTester 建议的那样,MVC(模型、视图、控制器)绝对是要走的路。你使用你的模型来处理数据——从数据库等加载它或者你想做的任何事情。控制器允许您做任何您需要做的事情并使用视图输出结果内容。您可以使用Smarty轻松实现您想要做的事情

我当然会建议使用 Smarty 或类似的模板引擎来处理您的视图,因为您还可以以有序的方式分割不同的视图。

于 2013-06-24T14:51:43.833 回答