index.php
<?php
// 引入公用函数库
include './include/functions.php';
// 引入文章类
include './include/Article.class.php';
// 三元表达式:如果m存在就按提交的数据显示,不存在就显示首页
$method = isset($_GET['m']) ? $_GET['m'] : 'index';
// 实例化文章类
$obj = new Article();
// 访问对应的方法
$obj->$method();
?>
Article.class.php
<?php
class Article{
// 创建一个文章类
public function index(){
//首页
$db = include "./db.php";
// 引入数据文件
include "./template/index.html";
}
public function add(){
if(IS_POST){
//如果有POST提交数据
$db = include "./db.php";
// 引入数据文件
$data = array(
//将提交数据组合成一个新数组
'title' => htmlspecialchars($_POST['title']),
//文章标题
'content' => htmlspecialchars($_POST['content']),
//文章内容
'time' => date('Y-m-d H:i:s')//文章发布时间
);
array_unshift($db, $data);
// 将新输入压入数据文件的开头位置
$newDb = var_export($db, TRUE);
// 标准化数组
$str = <<<mark
<?php
return $newDb;
mark;
file_put_contents('./db.php', $str);
// 输出到数据文件
success('发布成功','./index.php');
// 发布成功跳转
}
include "./template/addShow.html";
// 如果没提交内容就显示模板内容
}
public function edit(){
//编辑
$db = include "./db.php";
// 引入数据文件
//如果GET提交含有m且参数是edit,存在aid且转换整型后小于数组当前的总数
if($_GET['m']=='edit' && isset($_GET['aid']) && intval($_GET['aid'])<=count($db)){
if(IS_POST){
// 如果有提交内容
$data = array(
//将提交内容组合成一个新数组
'title' => htmlspecialchars($_POST['title']),
//文章标题
'content' => htmlspecialchars($_POST['content']),
//文章内容
'time' => date('Y-m-d H:i:s')
// 文章发布时间
);
$db[$_GET['aid']] = $data;
//将新内容按索引覆盖原先的数组
$newDb = var_export($db, TRUE);
//将新数组标准化
$str = <<<mark
<?php
return $newDb;
mark;
file_put_contents('./db.php', $str);
//重新输出到数据文件
success('修改成功','./index.php');
//修改成功后跳转到首页
}
include "./template/editShow.html";
//如果没提交内容就显示编辑模板
}elseif (!isset($db[$_GET['aid']])){
//如果要编辑的ID不存在了就返回错误
error('文章不存在','./index.php');
}else{
//如果GET参数不符合上面的规则就返回非法参数
error('非法参数','./index.php');
}
}
public function del(){
//删除
$db = include "./db.php";
// 引入数据文件
//如果GET提交含有m且参数是edit,存在aid且转换整型后小于数组当前的总数
if($_GET['m']=='del' && isset($_GET['aid']) && intval($_GET['aid'])<=count($db)){
unset($db[$_GET['aid']]);
//将数据文件里的指定aid删除
$newDb = var_export($db,TRUE);
//将数据文件里的内容重新标准化
$str = <<<mark
<?php
return $newDb;
mark;
file_put_contents('./db.php', $str);
//输出到数据文件
success('删除成功','./index.php');
//删除成功后返回首页
}elseif (!isset($db[$_GET['aid']])){
//如果要删除的id不存在就返回错误
error('文章不存在','./index.php');
}else{
error('非法参数','./index.php');
//如果都不符合,也返回错误跳转到首页
}
}
public function show(){
//显示内容页
$db = include "./db.php";
// 引入数据文件
include "./template/show.html";
//引入内容展示模板
}
}
?>
数据文件db.php
<?php
return array (
0 =>
array (
'title' => '如何创建浮动式标签模式?',
'content' => 'Matt Smith分享了一种新颖的表单交互模式,也就是我们所说的浮动式标签。在这种模式中,当用户聚焦于某个输入框并输入内容之后,原有的内联标签就会“浮”到已输入的内容之上。这种超赞模式值得我们去学习!',
'time' => '2014-04-23 13:37:42',
),
1 =>
array (
'title' => '设计师专宠,Startup强大的UI设计框架',
'content' => 'Startup Framework是由Designmodo团队历经9个月开发而出的一款功能强大的UI设计框架,旨在帮助设计师设计出新颖且与众不同的网站。 ',
'time' => '2014-04-23 14:54:27',
),
2 =>
array (
'title' => 'EDP:基于Node.JS与NPM的企业级开发平台',
'content' => 'EDP是一个基于Node.JS与NPM的企业级前端应用的开发平台,主要通过命令行的方式使用。EDP允许用户自定义自己的扩展。当默认提供的工具无法完全满足开发的需求时,用户可以开发自己的扩展命令。',
'time' => '2014-04-23 13:29:08',
),
3 =>
array (
'title' => '挑战最强大脑——来自全球的14个编码社区',
'content' => '
思考问题有新的思维方式;
学到一门新语言;
提升解决方法的能力;
激发大脑灵感、专注;
有趣!
',
'time' => '2014-04-23 13:28:39',
),
4 =>
array (
'title' => '如期而至,GCC 4.9.0正式版发布!',
'content' => '
诊断信息支持彩色显示;
C和C++编译器支持OpenMP 4.0规格;
改进C++11和C++1y支持;
支持Power ISA 2.07及硬件事务性内存;
移除mudflap运行时检查器,mudflap选项保留,但没有任何效果;
一些很老的系统和不维护的平台在4.9 版本中声明为过世的,下一个版本将永久删除,包括Solaris 9。
',
'time' => '2014-04-23 13:28:03',
),
5 =>
array (
'title' => '为什么不用C#做服务器开发?',
'content' => 'C#是微软面向对象开发语言,紧紧只能用于window系统,好处是微软本身封装的比较完整,学习及开发比较容易上手,容易精通,但不支持跨平台,并且难于扩展。同时Windows系统本身庞大,易于感染病毒且防攻击能力较弱,维护成本高。所以阻碍了C#作为服务器开发语言的应用。',
'time' => '2014-04-23 12:29:10',
),
6 =>
array (
'title' => '同学们知道什么是静态语言?什么是动态语言?',
'content' => '
静态语言是需要进行变量/对象类型声明的语言,一般情况下需要编译执行。例如C/C++/Java/C#;
而动态语言指不需要进行变量/对象类型声明的语言,一般情况下不需要编译(但也有编译型的)。例如PHP/ASP/Ruby/Python/Perl/ABAP/SQL/JavaScript/Unix Shell等等。
',
'time' => '2014-04-23 12:28:34',
),
7 =>
array (
'title' => ' 什么是代码可移植性?',
'content' => '软件可移植性指与软件从某一环境转移到另一环境下的难易程度。为获得较高的可移植性,在设计过程中常采用通用的程序设计语言和运行支撑环境。尽量不用与系统的底层相关性强的语言。可移植性是软件质量之一,良好的可移植性可以提高软件的生命周期。',
'time' => '2014-04-23 12:28:10',
),
);