EasySwoole的管理
服务启动
php easyswoole start
守护模式启动
php easyswoole start d
默认配置加载dev.php,使用该命令加载produce.php
php easyswoole start produce
服务停止
php easyswoole stop
服务重启
php easyswoole reload 只重启task进程
php easyswoole reload all 重启task + worker进程
在App\HttpController
下创建Test.php
namespace App\HttpController;
use EasySwoole\Http\AbstractInterface\Controller;
class Test extends Controller
{
function index()
{
// TODO: Implement index() method.
$this->response()->write('this is test controller');
}
访问Test
控制器下的index
方法
我们主要是用于API
开发.所以在App\HttpController
下创建Api\Video.php
.在这个控制器中我不想用Index
方法.
namespace App\HttpController\Api;
use EasySwoole\Http\AbstractInterface\Controller;
class Video extends Controller
{
public function video()
{
return $this->response()->write('video');
}
}
访问测试.出现如下错误
之前说过!出了错肯定不是我们自己的问题.让我们一起来看看别人啥原因导致我们出错了!.在vendor\easyswoole\http\src\AbstractInterface\Controller.php
中
abstract class Controller
{
...
abstract function index();
...
}
报错是因为抽象类下面的抽象方法。如果在继承抽象类后。必须声明它里面的抽象方法。哪怕不写东西都行。否则会报错。真是tmd深井冰.如果每个控制器都要一个index
方法而我又用不到哪不是缺魂吗.
为了解决上述无聊恶心的问题我们在App\HttpController
下创建一个Base.php
作为Api
目下所有控制器的基础类
namespace App\HttpController\Api;
use EasySwoole\Http\AbstractInterface\Controller;
class Base extends Controller
{
public function index()
{
}
}
然后我们再在每个控制器下不继承Controller
而是继承Base
就可以了.如果你需要用到index
方法.那直接在对应的控制器下创建就行了.不冲突的哟.
当然既然是Api接口肯定会与客户端进行交互的.我们如果直接输入一个值。它们是无法解析的。我们需要转成json的格式。首先查看vendor\easyswoole\http\src\AbstractInterface\Controller.php
下的writeJson
方法
protected function writeJson($statusCode = 200, $result = null, $msg = null)
{
if (!$this->response()->isEndResponse()) {
$data = Array(
"code" => $statusCode,
"result" => $result,
"msg" => $msg
);
$this->response()->write(json_encode($data, JSON_UNESCAPED_UNICODE | JSON_UNESCAPED_SLASHES));
$this->response()->withHeader('Content-type', 'application/json;charset=utf-8');
$this->response()->withStatus($statusCode);
return true;
} else {
return false;
}
}
他的格式是code
,result
,msg
`.而我们需要restuful
风格的返回格式.稍作修改
protected function writeJson($statusCode = 200, $msg = null, $result = null)
{
if (!$this->response()->isEndResponse()) {
$data = Array(
"code" => $statusCode,
"msg" => $msg,
"result" => $result
);
}
修改App\HttpController\Api\Video.php
的video
方法
public function video()
{
$arr = [
'id' => 1,
'user' => '二滑大魔王'
];
return $this->writeJson(0, 'ok', $arr);
}
反问测试
获取传参数.在学习中我们不一定要去看文档.查看源码就可以知道怎么去用的.所以多阅读源码也不是一件坏事.查看vendor\easyswoole\http\src\AbstractInterface\Controller.php
protected function request(): Request
{
return $this->request;
}
protected function response(): Response
{
return $this->response;
}
调用request
方法就会走到vendor\easyswoole\http\src\Message\ServerRequest.php
再调用其的方法获参.
修改修改App\HttpController\Api\Video.php
的video
方法
public function video()
{
$arr = [
'id' => 1,
'user' => '二滑大魔王',
'parm' => $this->request()->getRequestParam()
];
return $this->writeJson(0, 'ok', $arr);
}
测试
哦吼成功了哟.至此.你已经可以独立的使用EasySwoole
做一些简单的开发了呦