https://github.com/twn39/lightmoon
A framework based swoole
https://github.com/twn39/lightmoon
framework php swoole
Last synced: 8 months ago
JSON representation
A framework based swoole
- Host: GitHub
- URL: https://github.com/twn39/lightmoon
- Owner: twn39
- Created: 2017-08-23T09:21:48.000Z (over 8 years ago)
- Default Branch: master
- Last Pushed: 2025-01-09T00:53:58.000Z (about 1 year ago)
- Last Synced: 2025-04-03T08:42:56.601Z (12 months ago)
- Topics: framework, php, swoole
- Language: PHP
- Homepage:
- Size: 119 KB
- Stars: 18
- Watchers: 1
- Forks: 10
- Open Issues: 2
-
Metadata Files:
- Readme: readme.md
Awesome Lists containing this project
README
LightMoon是一个基于 Swoole 的微型框架,灵感来自于 Slimphp。
### 设计理念
简单至上,越少的代码意味着越少的 bug,此框架核心代码加上注释不足500行,路由采用 Symfony routing,依赖管理使用 pimple。
不同的项目有不同的需求,有人会使用 MVC 全功能框架,例如 Laravel 来开发整个业务,也有人会使用 Slimphp 这种微型框架来开发 api。
通过pimple很容易将 lightmoon 扩展为全功能框架,也可以仅仅使用核心功能来开发api。
### 优势
LightMoon 基于 Swoole,因此在性能方面有很大的优势,API借鉴于 Slimphp,熟悉 Slimphp 的用户能够很快上手,
灵活容易定制,甚至可以 fork 本项目修改核心代码来满足业务需求,在能够极大地提升性能的同时,可以利用 php 完整,成熟的生态。
### 缺点
LightMoon 是基于 swoole,因此需要对 Swoole 有基本的了解。
### 教程
#### 安装
```
composer require lightmoon/lightmoon
```
#### 使用
**简单示例**
```php
[
'host' => '0.0.0.0',
'port' => '8060',
'worker_num' => 2,
]
];
class HomeController
{
public function site($request, $response)
{
$response->write(json_encode([
'title' => 'hello swoole !',
]));
return $response;
}
public function api($request, $response, $attr) {
$response->write(json_encode([
'version' => $attr['version'],
]));
return $response;
}
}
class HomeControllerProvider implements ServiceProviderInterface
{
public function register(Container $container)
{
$container[HomeController::class] = new HomeController();
}
}
$app = new Application(new Config($config));
$app->register(new HomeControllerProvider());
$app->middleware(new JsonResponseMiddleware(), $priority = 10);
$app->get('home', '/', HomeController::class.'@site');
$app->get('api', '/api/{version}', HomeController::class.'@api', [
'version' => 'v[1-9]+'
]);
$app->run();
```
**middleware**
```php
middleware(function ($request, $response) {
$response->header('Content-type', "Application/json");
return $response;
}, $priority = 10);
```
**swoole event**
```php
on('workerstart', function () {
echo "worker started\n";
});
$app->on('start', function () {
echo "start....\n";
});
```
**路由**
路由支持: `GET`, `POST`, `PUT`, `DELETE`, `PATCH`, `HEAD`,
```php
$app->get('home', '/', 'HomeController@index')
```
**注册组件**
创建组建:
```php
use Pimple\Container;
class FooProvider implements Pimple\ServiceProviderInterface
{
public function register(Container $pimple)
{
// register some services and parameters
// on $pimple
}
}
```
注册:
```php
$app->register(new FooProvider());
```
添加数据库:
LightMoon 提供了 Eloquent ORM 封装,默认并没有启用,如需启用,可添加配置:
```php
$config = [
'server' => [
'host' => '0.0.0.0',
'port' => '8060',
'worker_num' => 2,
],
'DB' => [
'driver' => 'sqlite',
'database' => __DIR__ . '/DB.sqlite',
'prefix' => '',
'foreign_key_constraints' => true,
'pool' => [
'size' => 3,
]
],
```
注入数据库服务:
```php
$app->register(new DatabaseProvider());
```
> 注:Eloquent ORM 使用的是 PDO 和 Mysqli, 所以需要开启:`Swoole\Runtime::enableCoroutine()`。