sinri / clover
Requires
- php: >=5.3.0
This package is auto-updated.
Last update: 2022-02-01 13:03:53 UTC
README
PHP的RESTful Web项目MVC框架,MIT许可,当前版本0.2。
介绍
Clover的设计灵感来自CodeIgniter,但更加简单。它提供了RESTful风格的HTTP请求处理。
Clover使用模型-视图-控制器(MVC)架构。Clover会将所有请求解析到控制器、方法和其参数,并使用这些参数调用控制器的相应方法进行响应。
简而言之,URL clover.ng/CONTROLLER/METHOD/Param1/Param2
将由 CONTROLLER()->METHOD(Param1,Param2)
处理。当然,如果控制器被设计为支持,URL clover.ng/CONTROLLER/METHOD/Param1
、clover.ng/CONTROLLER/METHOD
和 clover.ng/CONTROLLER
也可用。
对于 GET
请求,Clover会解析查询字符串。对于 POST
,Clover默认接受编码的URL数据和表单数据格式,并在声明 application/json
为头部 Content-Type
的值时,请求以JSON数据作为HTTP请求体。
安装
Clover基于Apache的重写模块。(理论上也支持Nginx。)在根目录中创建并编辑以下内容的 .htaccess
文件:
RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ index.php [QSA,L]
# For Apache2
使用方法
Clover支持处理Web请求。从版本0.2开始,Clover也可以在CLI模式下使用,就像Yii框架支持的那样。
只需在 controller
目录中填写控制器类,在 model
目录中填写模型类,在 view
目录中填写视图HTML文件。对于命令行使用,请在 command
目录中填写命令。
将Clover文件导入 index.php
以处理Web请求,或导入 CloverCLI.php
以处理CLI。
require __DIR__.'/core/Clover.php';
在 index.php
中,首先设置根路径:
Clover::setRootPath($path_of_root);
出于某些奇怪的目的,Clover支持对MVC目录的定制,只需修改MIT许可下的源代码即可。
最后,启动Clover。
Clover::start();
控制器
创建一个包含类的PHP文件。文件名应与类名相同。类应扩展 CloverController
类。
类的属性将是控制器的属性,index
是默认值。URL的第三个元素及以后的元素(如果存在),将是方法的参数。
使用方法 display($view_file,$assignment=array(),$isPart=false)
来显示特定的视图。第二个参数是一个数组,用于携带分配给视图的参数。例如,如果将 array('K'=>'V')
作为 $assignment
传递,则可以使用 <?php echo $K; ?>
在响应视图中显示 V
。第三个参数接受布尔值,默认为FALSE以停止PHP脚本执行此函数调用。如果提供TRUE,PHP脚本将一直运行到代码的末尾。
模型
您可以在模型目录中创建一个与模型文件同名的PHP文件,以定义模型类。当调用时,该类将被自动加载。
视图
对于视图,在视图目录中创建HTML文件。在HTML内容中,您可以使用PHP代码,以及分配的参数。
命令
创建一个包含类的PHP文件。文件名应与文件中的类名相同。该类应扩展类CloverCommand
。
类中命名以.+Action
结尾的方法将被视为可执行的动作,默认为defaultAction
。对于参数的使用,请使用--PARAM_NAME=PARAM_VALUE
。
您可以通过覆盖beforeAction
和afterAction
函数来实现动作流程控制。
Clover类工具包
以下都是Clover类的静态函数。
获取查询方法
function getQuery($name=null,$default=null)
当$name
为null时,返回整个$_GET
。当$name
不为null时,如果设置了$_GET[$name]
,则尝试返回它,否则返回$default
。
获取原始HTTP请求方法
function getRawRequestBody()
返回当前HTTP请求的原始主体。
获取数据方法
function getData($name=null,$default=null)
如果请求以标准HTTP格式发送,当$name
为null时,返回整个$_POST
。当$name
不为null时,如果设置了$_POST[$name]
,则尝试返回它,否则返回$default
。
如果请求以JSON对象格式发送,并且在Content-Type
头部中声明了application/json
,Clover会将HTTP请求解析为JSON对象,并获取具有给定名称的属性,如果没有设置,则返回$default
。
备注。
我认为CI设计得很好,但它的重量对于简单的项目来说太重了。我想创建一个既自由又方便的环境,从需求到框架。简而言之,我不想学习太多关于一个工具,然后陷入工具的陷阱。使用Clover,您可以获得与CI几乎相同的结果,但您可以使用所有纯PHP函数,而不是CI的完全封装的工具包。你喜欢扩展吗?好吧,就像你喜欢的那样开发它们。Clover只是一个基础框架。