PHP创建文章列表的方法

我打算写函数动态创建文章和新闻列表,但不知道究竟什么是正确的方法.

我有/ 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来调用您的页面来显示您的文章或新闻.

旁注:这种方法使得以后在某种程度上可以轻松切换到数据库.

点赞