minetro / fly-response
v0.2
2016-07-18 16:25 UTC
Requires
- php: >= 5.5
- nette/application: ~2.3.0|~2.4.0
- nette/http: ~2.3.0|~2.4.0
Requires (Dev)
- nette/tester: ~1.7.0
This package is not auto-updated.
Last update: 2022-02-01 12:58:20 UTC
README
网站 🚀 contributte.org | 联系 👨🏻💻 f3l1x.io | 推特 🐦 @contributte
免责声明
⚠️ | 此项目不再维护。请使用 contributte/application。 |
---|
Composer | minetro/fly-response |
---|---|
版本 | |
PHP | |
许可证 |
文档
使用
响应
FlyResponse
用于通用目的和您的自定义解决方案。
FlyFileResponse
用于处理文件的特殊响应。
适配器
ProcessAdapter
通过 popen 执行命令。
use Minetro\FlyResponse\Adapter\ProcessAdapter; use Minetro\FlyResponse\FlyFileResponse; // Compress current folder and send to response $adapter = new ProcessAdapter('tar cf - ./ | gzip -c -f'); $response = new FlyFileResponse($adapter, 'folder.tgz'); $this->sendResponse($response);
StdoutAdapter
写入 php://output
。
use Minetro\FlyResponse\Adapter\StdoutAdapter; use Minetro\FlyResponse\Buffer\Buffer; use Minetro\FlyResponse\FlyFileResponse; use Nette\Http\IRequest; use Nette\Http\IResponse; // Write to stdout over buffer class $adapter = new StdoutAdapter(function(Buffer $buffer, IRequest $request, IResponse $response) { // Modify headers $response->setHeader(..); // Write data $buffer->write('Some data..'); }); $response = new FlyFileResponse($adapter, 'my.data'); $this->sendResponse($response);
CallbackAdapter
use Minetro\FlyResponse\Adapter\CallbackAdapter; use Minetro\FlyResponse\Buffer\Buffer; use Minetro\FlyResponse\FlyFileResponse; use Nette\Http\IRequest; use Nette\Http\IResponse; $adapter = new CallbackAdapter(function(IRequest $request, IResponse $response) use ($model) { // Modify headers $response->setHeader($header); // Fetch topsecret data $data = $this->facade->getData(); foreach ($data as $d) { // Write or print data.. } }); $response = new FlyFileResponse($adapter, 'my.data'); $this->sendResponse($response);
模型
final class BigOperationHandler { /** @var Facade */ private $facade; /** * @param Facade $facade */ public function __construct(Facade $facade) { $this->facade = $facade; } public function toFlyResponse() { $adapter = new CallbackAdapter(function (IRequest $request, IResponse $response) { // Modify headers $response->setHeader(..); // Fetch topsecret data $data = $this->facade->getData(); foreach ($data as $d) { // Write or print data.. } }); return new FlyFileResponse($adapter, 'file.ext'); // or return new FlyResponse($adapter); } } interface IBigOperationHandlerFactory { /** * @return BigOperationHandler */ public function create(); } final class MyPresenter extends Nette\Application\UI\Presenter { /** @var IBigOperationHandlerFactory @inject */ public $bigOperationHandlerFactory; public function handleMagic() { $this->sendResponse( $this->bigOperationHandlerFactory->create()->toFlyResponse() ); } }
开发
此包由以下作者维护。
考虑支持 contributte 开发团队。也感谢您使用此包。