PHP单文件路由SinglePHP,感觉挺对得上我的胃口的,地址:https://github.com/leo108/SinglePHP

配置:下载SinglePHP.class.php文件并丢到根目录下的Libs文件夹下,根目录下一个index.php文件,内容:

include './libs/SinglePHP.class.php';
$config = array('APP_PATH' => './');
SinglePHP::getInstance($config)->run();

根目录再创建一个Controller文件夹,View文件夹。路由URL支持NORMAL方式和PATHINFO方式

index.php?c=Test&a=Test  //TestController->TestAction

所有的控制器必须继承Controller类或其子类,并且类名必须以Controller结尾,统一放置在Controller目录下,文件名必须是“类名.class.php”。每一个Action对应控制器类的一个方法,方法名必须以Action结尾,同时必须是public权限。


 

控制器方法

$this->redirect('http://www.baidu.com'); //302跳转到百度
$this->AjaxReturn($ret); //将$ret格式化为json字符串后输出到浏览器
$db = M();  //获取数据库对象,前提是在入口文件配好数据库相关的配置
$name = $db->escape($_GET['name']);  //转义字符

SinglePHP只提供了简单的query和execute,并没有做模型和数据表的映射。
$ret = $db->query("select * from user where name = '$name'");
$count = $db->execute("insert user (name, email) values ('leo108', 'leo108@qq.com')");

通过Controller类的assign来给模板变量赋值,通过display方法来渲染模板。
assign方法接受两个参数,第一个参数是模板变量名,第二个参数是模板变量值。
display方法可以接受1个或0个参数。当没有参数时,则默认使用View/控制器名/Action名.php作为模板;如果参数值不带有'/',则默认使用View/控制器名/参数值.php作为模板;如果参数值带有1个'/',则会使用View/参数值.php作为模板。

<?php
class IndexController extends Controller {
   public function IndexAction(){
      $this->assign('str', 'hello world'); //给模板变量str赋值'hello world'
      $this->display(); //使用View/Index/Index.php作为模板
   }
   public function TestAction(){
      $this->display('test2'); //使用View/Index/test2.php作为模板
   }
   public function AnotherTestAction(){
      $this->display('user/test'); //使用View/user/test.php作为模板
   }
}

SinglePHP还提供了模板include功能,通过View::tplInclude来引入其他模板,该静态方法接受1个或2个参数,第一个参数是模板,规则与display的参数相同,第二个参数是传递给该模板的模板变量,必须是关联型数组。

示例代码如下:

View/Public/header.php 公共头部文件

<!DOCTYPE html>
<head>
<title><?php echo $title;?></title>
</head>
View/Index/Index.php 首页模板文件

<?php
$data = array(
'title' => 'Welcome', //设置title变量为Welcome
);
View::tplInclude('Public/header', $data); ?>
xxxxxxx其他玩意