public/index.php 这是整个框架的单一入口
// 定义框架所有目录常量,就在当前目录的上一级,例: wamp/www/ define('DIR_ROOT', dirname(__DIR__) . '/'); // 导入框架类 require_once (DIR_ROOT . 'system/frame.system.php'); // 运行框架 SFrame::run();
这里只有三句话, 我想尽可能让这个文件简洁一些.
1.努力避免全局常量/变量, 我只定义了一个, 用来记录 根目录的物理路径,即前文中 的根路径
2.包含框架类,并且运行框架
3.其余的事情 由框架类来实现
但即使是单一入口的框架,就真的只有一个入口么?
现在我来说第二个入口.
业务中经常会出现这样的需求: 在控制台上运行一个PHP程序 ,或者由定时任务启动一个PHP程序
此需求与正常的WEB请求是有差别的
1.运行时间可能 较长
2.通常不会输出 HTML,而是 记录日志或输出到控制台(ECHO)
我在system下创建了这样的入口文件 system/program.php
/** * 作为 命令行模式使用的包含文件 */ // 定义框架所有目录常量,就在当前目录的上一级,例: wamp/www/ define('DIR_ROOT', dirname(__DIR__) . '/'); //包含核心函数库 require_once ('frame.system.php'); //处理命令行请求 SFrame::program(); 发现没有?与index.php 只有一点点的差别 还有没有第三个入口? 有的. 我经常遇到旧系统改造的需求:一个使用了其它的框架或者没有使用框架的系统,由于代码混乱或运行效率问题或扩展问题导致项目要进行重构 ,而且,同时还要求, 改造过程中,项目还要运行~~~~~ 怎么办? 花2-6个月去重构,然后更换? 老板是不能接受的! 我采取的方案是: 把我的框架 "嵌入" 到原系统 中, 将原系统 的功能逐渐 迁移到新框架中, 这要持续更长的开发时间,但这段时间内,不会影响系统 的正常使用 这就引出了第三个入口: system/plugin.php
/** * 本框架作为插件模式的入口 * 用于与其它框架配合使用 */ // 定义框架所有目录常量,就在当前目录的上一级,例: wamp/www/ define('DIR_ROOT', dirname(__DIR__) . '/'); //包含核心函数库 require_once ('frame.system.php');