hyperf 常用操作函数封装


<?php

use Hyperf\Contract\SessionInterface;
use Hyperf\Contract\StdoutLoggerInterface;
use Hyperf\HttpServer\Contract\ResponseInterface;
use Hyperf\HttpServer\Contract\RequestInterface;
use Hyperf\Logger\LoggerFactory;
use Hyperf\Server\ServerFactory;
use Hyperf\Utils\ApplicationContext;
use Swoole\Websocket\Frame;
use Swoole\WebSocket\Server as WebSocketServer;

if (!function_exists('container')) {
    /**
     * 容器实例
     * @return \Psr\Container\ContainerInterface
     */
    function container()
    {
        return ApplicationContext::getContainer();
    }
}

if (!function_exists('redis')) {
    /**
     * redis 客户端实例
     * @return \Hyperf\Redis\Redis|mixed
     */
    function redis()
    {
        return container()->get(Hyperf\Redis\Redis::class);
    }
}

if (!function_exists('server')) {
    /**
     * server 实例 基于 swoole server
     * @return \Swoole\Coroutine\Server|\Swoole\Server
     */
    function server()
    {
        return container()->get(ServerFactory::class)->getServer()->getServer();
    }
}

if (!function_exists('frame')) {
    /**
     * websocket frame 实例
     * @return mixed|Frame
     */
    function frame()
    {
        return container()->get(Frame::class);
    }
}

if (!function_exists('websocket')) {
    /**
     * websocket 实例
     * @return mixed|WebSocketServer
     */
    function websocket()
    {
        return container()->get(WebSocketServer::class);
    }
}

if (!function_exists('cache')) {
    /**
     * 缓存实例 简单的缓存
     * @return mixed|\Psr\SimpleCache\CacheInterface
     */
    function cache()
    {
        return container()->get(Psr\SimpleCache\CacheInterface::class);
    }
}

if (!function_exists('stdLog')) {
    /**
     * 向控制台输出日志
     * @return StdoutLoggerInterface|mixed
     */
    function stdLog()
    {
        return container()->get(StdoutLoggerInterface::class);
    }
}

if (!function_exists('logger')) {
    /**
     * 向日志文件记录日志
     * @return \Psr\Log\LoggerInterface
     */
    function logger()
    {
        return container()->get(LoggerFactory::class)->make();
    }
}

if (!function_exists('request')) {
    /**
     * 请求对象
     * @return mixed|RequestInterface
     */
    function request()
    {
        return container()->get(RequestInterface::class);
    }
}

if (!function_exists('response')) {
    /**
     * 请求回应对象
     * @return ResponseInterface|mixed
     */
    function response()
    {
        return container()->get(ResponseInterface::class);
    }
}

if (!function_exists('session')) {
    /**
     * session 对象
     * @return SessionInterface|mixed
     */
    function session()
    {
        return container()->get(SessionInterface::class);
    }
}

 

1、把该文件存放在autoload目录中,会自动加载

2、文件地址放在当前项目的composer.json里进行加载

"autoload": {
"psr-4": {
"App\\": "app/"
},
"files": [
"app/Functions.php"
]
},

 建议使用方法2

相关测试方法

/**
     * 常用操作函数封装
     */
    function func(){
        // 文件日志
        logger()->error('来了');
        // 控制台日志
        stdLog()->info('logger 成功');

        // 获取请求内容,输出
        $data = request()->input('hi');

        // redis操作
        cache()->set('cache_name', '我是redis值lobtao');

        // 获取server()相关信息
        $masterPid = server()->getMasterPid();
        $managerPid = server()->getManagerPid();
        $workerId = server()->getWorkerId();
        $workerPid = server()->getWorkerPid();
        $workerStatus = server()->getWorkerStatus($workerId);

        $response = "masterPid={$masterPid}, managerPid={$managerPid}, workerId={$workerId}, workerPid={$workerPid}, workerStatus={$workerStatus}";

        // session 相关操作
        session()->put('session_name', '我是session值:yssoft');

        // frame 和 websocket 没法测试
        // $fd = frame()->fd;

        // response输出
        return response()->raw('response: '.$response);
    }

    function funcget(){
        // cache 获取
        $cache_name = cache()->get('cache_name');

        // session 获取
        $session_name = session()->get('session_name');
        $session_id = session()->getId();

        $response = "cache_name = {$cache_name}, session_name = {$session_name}, session_id = {$session_id}";
        return response()->raw('response: '.$response);
    }

 


免责声明!

本站转载的文章为个人学习借鉴使用,本站对版权不负任何法律责任。如果侵犯了您的隐私权益,请联系本站邮箱yoyou2525@163.com删除。



 
粤ICP备18138465号  © 2018-2025 CODEPRJ.COM