grobmeier / cicada
受Ruby Sinatra启发的轻量级PHP框架,用于快速创建Web应用
0.5.1
2017-05-09 12:41 UTC
Requires
- php: >=5.4.0
- evenement/evenement: ~2.0.0
- pimple/pimple: ~3.0.0
- symfony/http-foundation: ~2.6.0
- symfony/http-kernel: ~2.6.0
Requires (Dev)
- mockery/mockery: ~0.9.3
- phpunit/phpunit: 4.*
- satooshi/php-coveralls: *
README
用于创建传统或REST类似Web应用的微型框架。
安装
通过Composer将Cicada添加为项目需求
composer require "cicada/cicada=@stable"
使用方法
最小化应用
require '../vendor/autoload.php'; use Cicada\Application; use Symfony\Component\HttpFoundation\Request; use Symfony\Component\HttpFoundation\Response; $app = new Application(); // Add a route $app->get('/hello/{name}', function (Application $app, Request $request, $name) { return new Response("Hello $name"); }); $app->run();
此应用有一个路由,将匹配以/hello/
开头的GET请求,并将匹配的{name}
作为$name
参数传递给回调函数。
回调函数应该返回一个响应对象。如果返回一个字符串,它将隐式转换为响应。
异常处理
路由回调可能抛出异常。默认情况下,Cicada在这种情况下将返回HTTP 500响应(内部服务器错误)。然而,可以添加异常处理器来拦截特定异常并返回适当的响应。
例如,如果您想捕获自定义的NotImplementedException
并返回自定义错误信息
$app->exception(function (NotImplementedException $ex) { $msg = "Dreadfully sorry, old chap, but tis' not implemented yet."; return new Response($msg, Response::HTTP_INTERNAL_SERVER_ERROR); });
传递给$app->exception()
的回调函数必须有一个参数,并且该参数必须有一个表示要处理的异常类的类类型提示。
可以指定多个异常处理器,并且它们将按照指定的顺序尝试。
$app->exception(function (SomeException $ex) { return new Response("Arrrghhhhh", Response::HTTP_INTERNAL_SERVER_ERROR); }); $app->exception(function (OtherException $ex) { return new Response("FFFFUUUUUUU...", Response::HTTP_INTERNAL_SERVER_ERROR); }); // If all else fails, this will catch any exceptions $app->exception(function (Exception $ex) { $msg ="Something went wrong. The incident has been logged and our code monkeys are on it."; return new Response($msg, Response::HTTP_INTERNAL_SERVER_ERROR); });