一款零配置、无骨架、极小化的 Hyperf 发行版,通过 Nano 可以让您仅仅通过 1 个 PHP 文件即可快速搭建一个 Hyperf 应用

一款零配置、无骨架、极小化的 Hyperf 发行版,通过 Nano 可以让您仅仅通过 1 个 PHP 文件即可快速搭建一个 Hyperf 应用
特性

  • 无骨架
  • 零配置
  • 快速启动
  • 闭包风格
  • 支持注解外的全部 Hyperf 功能
  • 兼容全部 Hyperf 组件
  • Phar 友好

安装

  1. composer require hyperf/nano

复制代码

快速开始

创建一个 PHP 文件,如 index.php 如下:
  1. <?php
  2. use Hyperf\Nano\Factory\AppFactory;
  3. require_once __DIR__ . ‘/vendor/autoload.php’;
  4. $app = AppFactory::create();
  5. $app->get(‘/’, function () {
  6.     $user = $this->request->input(‘user’, ‘nano’);
  7.     $method = $this->request->getMethod();
  8.     return [
  9.         ‘message’ => “hello {$user}”,
  10.         ‘method’ => $method,
  11.     ];
  12. });
  13. $app->run();

复制代码

启动服务:
  1. php index.php start

复制代码

简洁如此。

更多示例路由

$app 集成了 Hyperf 路由器的所有方法。
  1. <?php
  2. use Hyperf\Nano\Factory\AppFactory;
  3. require_once __DIR__ . ‘/vendor/autoload.php’;
  4. $app = AppFactory::create();
  5. $app->addGroup(‘/nano’, function () use ($app) {
  6.     $app->addRoute([‘GET’, ‘POST’], ‘/{id:\d+}’, function($id) {
  7.         return ‘/nano/’.$id;
  8.     });
  9.     $app->put(‘/{name:.+}’, function($name) {
  10.         return ‘/nano/’.$name;
  11.     });
  12. });
  13. $app->run();

复制代码

DI 容器

  1. <?php
  2. use Hyperf\Nano\ContainerProxy;
  3. use Hyperf\Nano\Factory\AppFactory;
  4. require_once __DIR__ . ‘/vendor/autoload.php’;
  5. class Foo {
  6.     public function bar() {
  7.         return ‘bar’;
  8.     }
  9. }
  10. $app = AppFactory::create();
  11. $app->getContainer()->set(Foo::class, new Foo());
  12. $app->get(‘/’, function () {
  13.     /** @var ContainerProxy $this */
  14.     $foo = $this->get(Foo::class);
  15.     return $foo->bar();
  16. });
  17. $app->run();

复制代码

所有 app管理的闭包回调中,
this 都被绑定到了 Hyperf\Nano\ContainerProxy 上。

中间件

  1. <?php
  2. use Hyperf\Nano\Factory\AppFactory;
  3. require_once __DIR__ . ‘/vendor/autoload.php’;
  4. $app = AppFactory::create();
  5. $app->get(‘/’, function () {
  6.     return $this->request->getAttribute(‘key’);
  7. });
  8. $app->addMiddleware(function ($request, $handler) {
  9.     $request = $request->withAttribute(‘key’, ‘value’);
  10.     return $handler->handle($request);
  11. });
  12. $app->run();

复制代码

除了闭包之外,所有 $app->addXXX() 方法还接受类名作为参数。可以传入对应的 Hyperf 类。

异常处理

  1. <?php
  2. use Hyperf\HttpMessage\Stream\SwooleStream;
  3. use Hyperf\Nano\Factory\AppFactory;
  4. require_once __DIR__ . ‘/vendor/autoload.php’;
  5. $app = AppFactory::create();
  6. $app->get(‘/’, function () {
  7.     throw new \Exception();
  8. });
  9. $app->addExceptionHandler(function ($throwable, $response) {
  10.     return $response->withStatus(‘418’)
  11.         ->withBody(new SwooleStream(‘I\’m a teapot’));
  12. });
  13. $app->run();

复制代码

命令行

  1. <?php
  2. use Hyperf\Contract\StdoutLoggerInterface;
  3. use Hyperf\Nano\Factory\AppFactory;
  4. require_once __DIR__ . ‘/vendor/autoload.php’;
  5. $app = AppFactory::create();
  6. $app->addCommand(‘echo’, function(){
  7.     $this->get(StdoutLoggerInterface::class)->info(‘A new command called echo!’);
  8. });
  9. $app->run();

复制代码

执行

  1. php index.php echo

复制代码

事件监听

  1. <?php
  2. use Hyperf\Contract\StdoutLoggerInterface;
  3. use Hyperf\Framework\Event\BootApplication;
  4. use Hyperf\Nano\Factory\AppFactory;
  5. require_once __DIR__ . ‘/vendor/autoload.php’;
  6. $app = AppFactory::create();
  7. $app->addListener(BootApplication::class, function($event){
  8.     $this->get(StdoutLoggerInterface::class)->info(‘App started’);
  9. });
  10. $app->run();

复制代码

自定义进程

  1. <?php
  2. use Hyperf\Contract\StdoutLoggerInterface;
  3. use Hyperf\Nano\Factory\AppFactory;
  4. require_once __DIR__ . ‘/vendor/autoload.php’;
  5. $app = AppFactory::create();
  6. $app->addProcess(function(){
  7.     while (true) {
  8.         sleep(1);
  9.         $this->get(StdoutLoggerInterface::class)->info(‘Processing…’);
  10.     }
  11. });
  12. $app->run();

复制代码

定时任务

  1. <?php
  2. use Hyperf\Contract\StdoutLoggerInterface;
  3. use Hyperf\Nano\Factory\AppFactory;
  4. require_once __DIR__ . ‘/vendor/autoload.php’;
  5. $app = AppFactory::create();
  6. $app->addCrontab(‘* * * * * *’, function(){
  7.     $this->get(StdoutLoggerInterface::class)->info(‘execute every second!’);
  8. });
  9. $app->run();

复制代码

使用更多 Hyperf 组件

  1. <?php
  2. use Hyperf\DB\DB;
  3. use Hyperf\Nano\Factory\AppFactory;
  4. require_once __DIR__ . ‘/vendor/autoload.php’;
  5. $app = AppFactory::create();
  6. $app->config([
  7.     ‘db.default’ => [
  8.         ‘host’ => env(‘DB_HOST’, ‘localhost’),
  9.         ‘port’ => env(‘DB_PORT’, 3306),
  10.         ‘database’ => env(‘DB_DATABASE’, ‘hyperf’),
  11.         ‘username’ => env(‘DB_USERNAME’, ‘root’),
  12.         ‘password’ => env(‘DB_PASSWORD’, ”),
  13.     ]
  14. ]);
  15. $app->get(‘/’, function(){
  16.     return DB::query(‘SELECT * FROM `user` WHERE gender = ?;’, [1]);
  17. });
  18. $app->run();

复制代码

下载说明:
1.本站资源都是白菜价出售,同样的东西,我们不卖几百,也不卖几十,甚至才卖几块钱,一个永久会员能下载全站100%源码了,所以单独购买也好,会员也好均不提供相关技术服务。
2.如果源码下载地址失效请联系站长QQ进行补发。
3.本站所有资源仅用于学习及研究使用,请必须在24小时内删除所下载资源,切勿用于商业用途,否则由此引发的法律纠纷及连带责任本站和发布者概不承担。资源除标明原创外均来自网络整理,版权归原作者或本站特约原创作者所有,如侵犯到您权益请联系本站删除!
4.本站站内提供的所有可下载资源(软件等等)本站保证未做任何负面改动(不包含修复bug和完善功能等正面优化或二次开发);但本网站不能保证资源的准确性、安全性和完整性,由于源码具有复制性,一经售出,概不退换。用户下载后自行斟酌,我们以交流学习为目的,并不是所有的源码都100%无错或无bug;同时本站用户必须明白,【188资源网】对提供下载的软件等不拥有任何权利(本站原创和特约原创作者除外),其版权归该资源的合法拥有者所有。
5.请您认真阅读上述内容,购买即以为着您同意上述内容。
188资源网 » 一款零配置、无骨架、极小化的 Hyperf 发行版,通过 Nano 可以让您仅仅通过 1 个 PHP 文件即可快速搭建一个 Hyperf 应用

提供最优质的资源集合

立即查看 了解详情