基础框架 / 基础框架-hacklang
用于创建RESTful JSON API的Hack框架
This package is not auto-updated.
Last update: 2024-09-28 16:31:02 UTC
README
(主要)使用严格的Hack编写。
这是从PHP到(主要)严格的Hack的重写,"主要"是因为目前尚无方法以严格模式启动Hack代码(因为它不允许顶层代码),同时也因为对$_SERVER超级全局的依赖。
基础框架是一个轻量级的类似RESTful框架,旨在接受和输出JSON格式的输入和输出。它旨在快速实现后端与backbone.js或类似的前端通信。
基础框架-hacklang提供以下功能
- 将路由分配给闭包。
- 支持命名参数的路由,可以按名称检索。
- 无状态,即核心中没有$_SESSION、$_COOKIE引用。
- JSON输入解码和输出编码(正如backbone.js所期望的)。
- 可以轻松使用常见的HTTP状态码响应请求。
- 简单处理资源上的GET、POST、PUT和DELETE HTTP方法。
- 核心大小约为20KB。
示例
在以下示例中,我将设置一个快速路由来响应请求/articles/199
。在app/Config/Routes.php中添加以下内容:
$router->register('articles/:id', function($ioc) { $request = $ioc->get('request'); $response = $ioc->get('response'); if ($request instanceof Request && $response instanceof Response) { $response->send(200, $request->routeParams); } else { throw new ServerException('IoC failed to resolve.'); } });
当接收到请求/articles/199
时,这将响应{"id":"199"}
作为响应体,并返回HTTP状态码200。这并不是HTTP请求方法特定的。
要使路由响应特定的HTTP请求方法,可以将register()替换为get()、post()、put()或delete()。例如:
$router->post('articles/:id', function($ioc) { $request = $ioc->get('request'); $response = $ioc->get('response'); if ($request instanceof Request && $response instanceof Response) { $response->send(200, $request->routeParams); } else { throw new ServerException('IoC failed to resolve.'); } });
这将仅在请求为HTTP POST时响应/articles/199
。
安装
基础框架设计为只有一个'public'目录是包中对外可访问的目录。这意味着如果您在Apache的VirtualHost下安装基础框架,则web根应指向'public'目录(例如,/var/www/groundwork/public)。如果您在web根的子目录下安装基础框架而不是作为其自己的虚拟主机,则可以设置一个Apache别名到public目录以在Web侧获得更好的目录结构。
文件app/Config/Config.php包含baseurl
属性,您需要将其更改为反映基础框架相对于web根的位置 - 例如,如果它被安装到https:///bar/,则'/bar/'将是此属性的值。
从项目根目录运行composer update
。基础框架在包方面没有内置要求,但确实使用了Composer类自动加载。
测试
在app/Tests中提供了一个基本功能测试用于示例主页资源类。在framework/Tests中也有单元测试。要运行测试,我发现在根groundwork目录中使用以下命令可以工作:
hhvm $(which phpunit)
许可
基础框架-hacklang是开源软件,许可协议为MIT许可。