初学EasySwoole使用情况总结包括数据库 模板 验证码 session 文件上传等学习总结

1.安装swoole php扩展

2.安装easyswoole框架  需要安装各类扩展才可以使用

3.扩展使用列表  根据自己的需求定制下载
session  需要下载
mysql    需要下载  我用的是tp5.1 的think-orm
template 需要下载  我用的是tp5.1 的think-template
热重启服务需要下载


4.使用方式
a.热重启服务
      composer 下载地址
      composer require easyswoole/hot-reload
      全局注册 找到EasySwooleEvent.php  的初始化函数(mainServerCreate)中
      //热重启服务
    $hotReloadOptions = new \EasySwoole\HotReload\HotReloadOptions;
    $hotReload = new \EasySwoole\HotReload\HotReload($hotReloadOptions);
    $hotReloadOptions->setMonitorFolder([EASYSWOOLE_ROOT . '/App']);
    $server = ServerManager::getInstance()->getSwooleServer();
    $hotReload->attachToServer($server);


b.session服务    
    composer 下载地址
    composer require easyswoole/session=2.x
    //类的引入
    use EasySwoole\Session\Session;
    use EasySwoole\Session\SessionFileHandler;


    //初始化函数中
    //session 服务
    //可以自己实现一个标准的session handler
    $handler = new SessionFileHandler(EASYSWOOLE_TEMP_DIR);
    //表示cookie name   还有save path
    Session::getInstance($handler,'easy_session','session_dir');
    //在onRequest()函数中
    $cookie = $request->getCookieParams('easy_session');
    if(empty($cookie)){
        $sid = Session::getInstance()->sessionId();
        $response->setCookie('easy_session',$sid);
    }else{
        Session::getInstance()->sessionId($cookie);
    }


    //控制器中使用方式
    //引入session类
    use EasySwoole\Session\Session;
    //唯一的sessionid
    Session::getInstance()->sessionId();
    //获取$cookie name
    $sid = $this->request()->getCookidParams('easy_session');
    //设置值
    Session::getInstance()->set(session标识,数据);
    //获取值
    Session::getInstance()->get(session标识);
    //消除session
    Session::getInstance()->del(session标识);
    //其他使用的需要去session.php文件中自行查看

c.模板使用
    composer 下载地址
    第一个 easyswoole模板驱动
    composer require easyswoole/template
    第二个 tp模板驱动
    composer require topthink/think-template
    //下载完成tp模板驱动 自己做处理 必须做  可以从别人的网站上抄一份 位置自己定义就可以了
    //网址 网上搜索的大神网址介绍 谢谢
    http://www.umdzz.cn/article/21/easyswoolethink-template
    //注册引入类
    use EasySwoole\Template\Render;
    use App\Providers\Template;
    //注册函数中使用
    //注册模板使用全局
    //在全局的主服务中创建事件中,实例化该Render,并注入你的驱动配置
    $render = Render::getInstance();
    $render->getConfig()->setRender(new Template());
    $render->attachServer(ServerManager::getInstance()->getSwooleServer());

    //控制器中使用方式
    //引入模板类
    use EasySwoole\Template\Render;
    $tpl  模板的路径 
    $data 页面要渲染的内容
    public function fetch($tpl,$data=array()){
        if($tpl){
            $this->response()->write(Render::getInstance()->Render($tpl,$data));
        }else{
            $this->writeJson(500,'','没有传入模板路径');
        }
    }


d.数据库使用
    composer  下载地址
    composer require topthink/think-orm
    //下载完成后 可以在配置文件 dev.php获取开发环境 中加入数据库配置信息
      'database' => [
        // 数据库类型
        'type'            => 'mysql',
        // 服务器地址
        'hostname'        => '127.0.0.1',
        // 数据库名
        'database'        => 'swoole',
        // 用户名
        'username'        => 'root',
        // 密码
        'password'        => 'root',
        // 端口
        'hostport'        => '3306',
        // 数据库表前缀
        'prefix'          => '',
        // 是否需要断线重连
        'break_reconnect' => true,
    ]
    注册函数
    use think\facade\Db;
    //在initialize中注册
    //数据库配置服务
       $db_config= Config::getInstance()->getConf('database');
       Db::setConfig($db_config);

       //控制器中使用  其他的所有数据库操作和tp5.1一样
       use think\facade\Db;
       //模型中使用
       use think\Model;

e.验证码使用
    composer  下载地址
    composer require easyswoole/verifycode=3.x
    使用方式
    use EasySwoole\VerifyCode\Conf;
    EasySwoole\Utility\Random
    $config = new Conf();
    $code = new \EasySwoole\VerifyCode\VerifyCode($config);
    //输出png图片
    $this->response()->withHeader('Content-Type','image/png');
    //利用easyswoole中的杂项 随机数来生成数字随机数
    $num = Random::number(4); 4位随机数
    $this->response()->write($code->DrawCode($num)->getImageByte());
    //同时为了能够保证验证 所以我把验证码加密放在cookie中 进行验证
    function  setCodeCookie($num){
        //加密字符
        $salt = "demo";
        //加密时间
        $time = time();
        //进行加密
        $cookie1 = md5($num.$salt.$time);
        $cookie2 = $time;  保证时间的一致性
        //设置cookie数据  2个小时的有效期
        $this->response()->setCookie('cookie1_name',$cookie1,time()+7200);
        $this->response()->setCookie('cookie2_name',$cookie2,time()+7200);
    }

    //用户登录时的验证码验证
    function getCodeCookie($code=null){
        if(!$code){
            return false;
        }
        //加密字符
        $salt = 'demo';
        //获取cookie 根据cookie的名称
        $cookie1 = $this->request()->getCookieParams('cookie1_name');
        $cookie2 = $this->request()->getCookieParams('cookie2_name');
        //对比验证 返回结果
        $cookie2 = md5($code.$salt.$cookie2);
        if ($cookie1 == $cookie2){
            return true;
        }else{
            return false;
        }
    }
f.图片上传  easyswoole 自带上传功能  直接使用即可  其他数据查找文档使用即可
    //控制器使用方式
    try{
        $reqeust = $this->request();
        $file = $reqeust->getUploadFile();//单个文件名称
        $files = $reqeust->getUploadFiles();//多个文件名称
        //文件名称
        $name = $file->getClientFilename();
        //文件移动  
        $file->moveTo('文件路径'.文件名称);
    }catch(\Throwable $e){
        $this->writeJson(400,$e->getMessage());
    }

你可能感兴趣的:(EasySwoole,php,后端,数据库)