基础框架/基础框架-hacklang

用于创建RESTful JSON API的Hack框架

0.1.0 2014-07-11 10:32 UTC

This package is not auto-updated.

Last update: 2024-09-28 16:31:02 UTC


README

Build Status

(主要)使用严格的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许可。