我打算写函数动态创建文章和新闻列表,但不知道究竟什么是正确的方法.
我有/ articles和/ news文件夹包含article1.php,article2.php等文件.
这些文件包含变量$date(发布日期),$type(新闻/文章),$h1,$h2(标题,副标题),$short(要在列表中显示的短paraghaph).
我想在一个页面上创建这些文件的列表.
HTML:
<div>
$content <!--here goes list of all articles/news-->
</div>
是否会更好:
1.
>在articlelist.php中写while while循环:
[pseudocode] $content = ""; while (get another filename from /articles) include filename $content .= (variables from filename.php parsed into html) display $content
>第二个是newslist.php的相同循环.
(使用这种方法,例如按日期排序文章可能很困难.)
或者可能:
2.
>创建articlearray.php和newsarray.php文件,将表格中每篇文章和新闻文件的数据存储在数组中:value = $date:[$type,$h1,$h2,$short]
>创建解析数组函数将整个给定数组解析为HTML(包含来自所有文件的数据)
>在articlelist.php和newslist.php中调用$content = parsearray(…)
>显示$content.
还是有其他更好的解决方案吗?
编辑:
我没有任何数据库,因为文章/新闻非常少.如果真的有必要,我会使用一个,但是现在请假设它应该用纯PHP完成. (我也问这个问题是为了学习目的,不仅实用.)
最佳答案 首先:建议管理您的内容和/或不同文件中的代码(为了更好的可理解性和可维护性),但不是强制性的.我会选择以下方法.将您的内容分成三个文件:
> index.php(包含“主要”功能)
> data.php(包含数据)
> functions.php(包含可调用函数)
的index.php
// index.php
require_once 'data.php';
require_once 'functions.php';
$allowedModules = array('articles', 'news');
if(empty($_GET['m']) || null === $_GET['m']) {
die('Module is required');
} else {
$module = $_GET['m'];
}
if(!in_array($module, $allowedModules)) {
die('Invalid module');
}
echo execute($module);
data.php
// data.php
$data = array(
'articles' => array(
array(
'date' => '2014-06-10',
'type' => 'article',
'h1' => 'My Headline #1',
'h2' => 'Subheadline #1',
'short' => 'My teaser'
),
array(
'date' => '2014-06-09',
'type' => 'article',
'h1' => 'My Headline #2',
'h2' => 'Subheadline #2',
'short' => 'My teaser'
)
),
'news' => array(
array(
'date' => '2014-06-08',
'type' => 'news',
'h1' => 'My News Headline #3',
'h2' => 'Subheadline #3',
'short' => 'My teaser'
),
)
);
的functions.php
// functions.php
function execute($module) {
global $data;
$content .= '<div>';
foreach($data[$module] as $item) {
$content .= '<span>' . $item['date'] . '</span>';
$content .= '<h1>'. $item['h1'] . '</h1>';
// $content .= ...
}
$content .= "</div>";
return $content;
}
现在您可以通过index.php?m = articles或index.php?m = news来调用您的页面来显示您的文章或新闻.
旁注:这种方法使得以后在某种程度上可以轻松切换到数据库.