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