<?php
/**
* PHP单一文件框架设计简析
* 1、MVC架构实现
* 2、URL路由原理
*/ //URL路由原理
/**
* 路由作用
* 获取url中的c和a变量,执行c类对应的方法a,实现不同的路由
*/
class App {
public $c;
public $a; public function run()
{
$c = isset($_GET['c']) ? $_GET['c'] : "Index"; //url提供类名字的变量名
$a = isset($_GET['a']) ? $_GET['a'] : "Index"; //url提供方法名字的变量名 $c .= "Controller";
if( class_exists($c) && method_exists($c, $a) ) {
$o = new $c();
$o->$a();
}else{
echo "error";
exit();
}
}
} //MVC架构
/**
* 模型层
* 获取应用数据作用
*/
class Model {
//TODO:link db、get data
} /**
* 视图类
* 编译、缓存及显示模板
*/
class View {
public function render($tpl)
{
echo "Hi, ".$tpl; //TODO:具体html模板
}
} /**
* 控制器
* 所有功能控制器继承该类
*/
class Controller {
public $view;
public $model; public function __construct()
{
$this->view = new View();
$this->model = new Model();
} public function display($tpl = "")
{
echo $this->view->render($tpl);
exit();
}
} //具体功能开发
class IndexController extends Controller {
/**
* 网站首页
*/
public function Index()
{
$this->display("Index");
}
/**
* 网站列表
*/
public function List()
{
$this->display("List");
}
} //单一文件入口
$app = new App();
$app->run();
?>

PHP单一文件入口框架简析的更多相关文章

  1. JDK框架简析--java.lang包中的基础类库、基础数据类型

    题记 JDK.Java Development Kit. 我们必须先认识到,JDK不过,不过一套Java基础类库而已,是Sun公司开发的基础类库,仅此而已,JDK本身和我们自行书写总结的类库,从技术含 ...

  2. Tornado框架简析

    Tornado是一款轻量级的Web服务器,同时又是一个开发框架.采用单线程非阻塞I/O模型(epoll),主要是为了应对高并发 访问量而被开发出来,尤其适用于comet应用. Tornado服务器3大 ...

  3. Linux驱动之USB总线驱动程序框架简析

    通用串行总线(USB)是主机和外围设备之间的一种连接.USB总线规范有1.1版和2.0版,当然现在已经有了3.0版本.USB1.1支持两种传输速度:低速为1.5Mbps,高速为12Mbps.USB2. ...

  4. logback.xml日志文件过滤器配置简析

    自定义过滤器 java代码,目的是在mdc中放值,然后在日志中打印 package com.controller; import com.pojo.JsonData; import org.slf4j ...

  5. CSV文件注入漏洞简析

    “对于网络安全来说,一切的外部输入均是不可信的”.但是CSV文件注入漏洞确时常被疏忽,究其原因,可能是因为我们脑海里的第一印象是把CSV文件当作了普通的文本文件,未能引起警惕. 一.漏洞定义 攻击者通 ...

  6. [Spring] 学习Spring Boot之一:基本使用及简析

    一.简介 使用 Spring Boot 目的主要是用来简化 Spring 应用的搭建及开发过程,因为使用 Spring 及 SpringMVC 框架时需要手动配置的地方非常多(各种包之间的依赖.各种配 ...

  7. 3D文件压缩库——Draco简析

    3D文件压缩库——Draco简析 今年1月份时,google发布了名为“Draco”的3D图形开源压缩库,下载了其代码来看了下,感觉虽然暂时用不到,但还是有前途的,故简单做下分析. 注:Draco 代 ...

  8. Android -- 多媒体播放之MediaPlayer使用内部实现简析

    Android -- MediaPlayer内部实现简析 在之前的博客中,已经介绍了使用MediaPlayer时要注意的内容.如今,这里就通过一个MediaPlayer代码实例,来进一步分析Media ...

  9. 简析 .NET Core 构成体系

    简析 .NET Core 构成体系 Roslyn 编译器 RyuJIT 编译器 CoreCLR & CoreRT CoreFX(.NET Core Libraries) .NET Core 代 ...

随机推荐

  1. Linux root目录下.gvfs问题处理

    最近收到一些关于磁盘的告警. 查了一下相关的信息. 知道了.gvfs文件夹是GNOME桌面系统的虚拟文件系统.可能是一些其它远程桌面之前连接所产生的一个文件,确定没有人再远程后.可以手动干掉它. 通过 ...

  2. file常用功能

    构造方法 File(String pathname):将指定的路径名转换成一个File对象 File f = new File("D:\\a\\b.txt"); File(Stri ...

  3. 深入理解C++11【4】

    [深入理解C++11[4]] 1.基于范围的 for 循环 C++98 中需要告诉编译器循环体界面范围.如for,或stl 中的for_each: int main() { ] = { , , , , ...

  4. HttpSession原理及Session冲突

    一.摘要         本文讨论了web服务器靠session id识别客户端.以及透过原理分析session冲突的原因,发现session冲突的原因是保存session id信息的cookie发生 ...

  5. vim matchit 自定义配对关键字之间的跳转

    vim因其强大的扩展性一直深受linux程序员的喜爱,最近在用vim写verilog的时候,由于一个逻辑块中的begin end较多,常常会多写或者漏掉匹配关键字,很是苦恼,于是寻找匹配关键字间跳转的 ...

  6. pandas 中有关isin()函数的介绍,python中del解释

  7. Apache和Nginx运行原理解析

    Web服务器 Web服务器也称为WWW(WORLD WIDE WEB)服务器,主要功能是提供网上信息浏览服务. 应用层使用HTTP协议. HTML文档格式. 浏览器统一资源定位器(URL). Web服 ...

  8. Shell中sed----学习

    sed原理及使用 目录 前言 一.简介 二.处理流程 三.命令选项options 四.pattern 1. 模式空间 2. 模式空间的转换 3. 地址匹配 五.procedure 1. 替换命令: s ...

  9. phpstudy 配置端口 和 虚拟域名访问

    打开phpstudy窗口 选择->其他选项菜单->打开配置文件->httpd.conf 添加一个 Listen 8081(端口号) 查看到    Include conf/vhost ...

  10. 重温IO

    IO就是输入输出,输出流可以理解为向目标写入数据,输入流可以理解为从源地址读取.流是一组有序的数据序列.   输入流 输出流 字节流 InputStream OutputStream 字符流 Read ...