sinri/clover

此软件包已被废弃,不再维护。作者建议使用sinri/enoch软件包代替。

PHP的RESTful Web项目MVC框架。

0.2 2016-12-19 07:24 UTC

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/Param1clover.ng/CONTROLLER/METHODclover.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

您可以通过覆盖beforeActionafterAction函数来实现动作流程控制。

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只是一个基础框架。