转载

Git@OSC 推荐|PHP 框架 zhaoma-framework

zhaoma-framework

开发初衷:

此框架开始设计于2013年,当时公司正在做一个企业项目,在此项目中甲方明确要求使用PHP语言,而项目中所有人员均为Java程序员,并且零PHP基础。 项目周期十分紧张,如果在去学习一些比较成型的PHP框架,开发周期无法完全把控,只能开发一个和现有的JAVA框架类似,使这些项目成员以最快的速度使用并开发。框架最大程序上的兼容了Struts的一些逻辑,使用起来看着有点像Struts. 框架经过几次小的修改后最终成型,并想到了开源。也就上传上来和大家共享一下了。 注:不管是PHPER还是JAVAER你们可以尽情的喷啊喷,(反正我也不在乎,框架名字都改成“找骂”了,人不要脸天下无敌,哈哈。)。但是如果你们有更好的建议,我也会虚心接受。☺☺☺

程序目录结构及作用

  • application 程序文件夹
    • config 项目配置文件,
      • constants.php 宏定义文件
      • autoload.php 项目中需要自动加载策略
      • config.php 主配置文件(自动加载)
      • database.php 数据配置文件(自动加载)
      • route.php 路由配置文件(自动加载)
      • xxxx.xx 其他配置文件,例如:redis配置。
    • controller 项目控制器路径
    • library 项目中依赖的第三方库,项目扩展库
    • model 项目中的Model文件
    • view 项目中所有视图层文件,包括:php,html,tpl
  • htdocs 资源文件目录,此目录下存放静态文件。注:资源文件的和项目文件上线后使用不同域名访问。
  • system 系统框架目录
    • core 框架核心代码
      • constants.php 框架定义宏(好像现在定义的两个也没使用上)
      • autoload.php 类的自动加载机制
      • Config.class.php 默认配置项以及加载机制
      • Request.class.php 请求解析器(默认)
      • ErrorHandler.class.php 异常处理
      • Controller.class.php 控制器基类
      • ViewRenderer.class.php 返回内容渲染器基类
      • ActionInvoker.class.php 反射执行类
    • error 框架异常处理文件目录
    • function 框架全局方法定义
    • renderer 返回内容渲染器
    • library 第三方框架目录
  • tmp Smarty临时目录
  • index.php 所有访问入口

项目安装使用

下载项目并解压到你的磁盘目录 /the_path_user_project

并配置Apache vhosts:

<VirtualHost htd.dimain.host:80>     ServerAdmin domainadmin@126.com     DocumentRoot "/the_path_user_project"     ServerName the.dimain.host     ServerAlias the.dimain.host      <Directory "/the_path_user_project">         Options Indexes FollowSymLinks          RewriteEngine On         RewriteCond %{REQUEST_FILENAME} !-f         RewriteCond %{REQUEST_FILENAME} !-d         RewriteRule (.+) index.php/$1 [L]          AllowOverride all         Require local         Order allow,deny         Allow from all     </Directory> </VirtualHost>  <VirtualHost htd.dimain.host:80>     ServerAdmin domainadmin@126.com     DocumentRoot "/the_path_user_project/htdocs"     ServerName htd.dimain.host     ServerAlias htd.dimain.host </VirtualHost>

配置及扩展

系统配置

默认配置(Config.class.php):

// 系统默认加载配置 $autoload = array("config", "database", "route");  //开发模式 $config['debug'] = false;  //默认请求解析器 $config["request"] = "Request";  // 默认系统控制器 $config['default_controller'] = 'index'; // 系统默认控制方法 $config['default_controller_method'] = 'index';  // 系统默认错误页面 $config['error_page'] = array(     "404" => "/system/error/404.php",     "500" => "/system/error/500.php" );  //默认返回结果显示控制器 $config["views_renderer"]["controller"] = array(     "html" => "IncludeViewRenderer",     "htm" => "IncludeViewRenderer",     "php" => "PHPViewRenderer",     "tpl" => "SmartyViewRenderer" );

自动加载配置项

在文件:/application/config/config.php

$autoload = $autoload + array("redis", "zeromq", ...);

开发模式

在文件:/application/config/config.php

$config['debug'] = true;

默认错误页面控制

在文件:/application/config/config.php

if (!$config["debug"]) {     //系统默认定义的错误页面     $config['error_page'] = array(       "404" => "/application/view/404.html",       "500" => "/application/view/500.html"     );   }

默认首页控制

在文件:/application/config/config.php

$config['default_controller'] = 'test'; $config['default_controller_method'] = 'test';

路由表

在文件:/application/config/route.php

$config["route"] = array(     "index" => "test/html",     "smarty" => "test/smarty",     "goto/*" => "test/$1" );

注:在路由表中“*”等价正则表达式(/w+)

其他配置

扩展

请求处理器(Request)扩展

请求处理控制器的扩展需要下面三步: 1、在文件夹/application/library中编写自己的请求控制类CustomRequest并继承Request 2、在配置文件/application/config/config.php中配置使用默认请求处理器

$config["request"] = "CustomRequest";

3、在/application/config/autoload.php中注册类的自动加载机制

spl_autoload_register(function ($class) {     if($class == "CustomRequest"){         include_once ROOT . "/application/library/request.php";     }     ... });

结果控制器(ViewRenderer)扩展

结果控制器的扩展需要以下三步: 1、在/application/library目录中编写结果控制器CustomViewRenderer并继承ViewRenderer

class CustomViewRenderer extends ViewRenderer {     public function display()     {         @header("Content-Type:text/plain; charset=UTF-8");         echo file_get_contents($this->viewPath($this->view));     } }

2、在/application/config/config.php中注册结果控制器

$config["views_renderer"]["controller"] = $config["views_renderer"]["controller"] + array(         "txt" => "CustomViewRenderer" );

3、在/application/config/autoload.php中注册类的自动加载机制

spl_autoload_register(function ($class) {     if($class == "CustomViewRenderer"){         include_once ROOT . "/application/library/renderer.php";     }     ... });

结束语

如果你觉得次框架开源使用或者您已经在你的项目中使用(估计不大可能),那请联系作者添加到【使用者友情链接】中去,当然如果你愿意的话。

使用者友情链接

======= # zhaoma-framework
正文到此结束
Loading...