Imi

    目录

    类名: Imi\Util\Imi

    框架里杂七杂八的各种工具方法基本都放在这个类

    方法

    仅列出可能常用的方法,大多数方法无需了解。

    parseDotRule

    处理按.分隔的规则文本,支持.转义不分隔

    // ['a', 'b', 'c']
    var_dump(Imi::parseDotRule('a.b.c'));
    
    // ['a.b', 'c']
    var_dump(Imi::parseDotRule('a\.b.c'));

    getClassNamespace

    获取类命名空间

    // A\B
    echo Imi::getClassNamespace('A\B\C');

    getClassShortName

    获取类短名称

    // C
    echo Imi::getClassShortName('A\B\C');

    getNamespacePath

    根据命名空间获取真实路径,返回null则为获取失败

    // /mnt/d/projects/imi-demo/vendor/imiphp/imi/src/
    echo Imi::getNamespacePath('Imi'), PHP_EOL;
    
    // /mnt/d/projects/imi-demo/HttpDemo/
    echo Imi::getNamespacePath('ImiDemo\HttpDemo'), PHP_EOL;

    getNamespacePaths

    根据命名空间获取真实路径,允许返回多个

    var_dump(Imi::getNamespacePaths('Imi'));

    getClassPropertyValue

    获取类属性的值,值为beans配置或默认配置,支持传入Bean名称

    构造方法赋值无法取出

    // 默认为Imi\Server\Group\Handler\Redis
    echo Imi::getClassPropertyValue('ServerGroup', 'groupHandler');

    getImiCmd

    获取imi命令行

    // php /mnt/d/projects/imi-demo/HttpDemo/bin/imi-swoole swoole/reload
    echo Imi::getImiCmd('swoole', 'reload');

    getRuntimePath

    获取运行时目录路径

    // 返回:运行时目录路径
    echo Imi::getRuntimePath();
    
    // 返回:运行时目录路径/a.jpg
    echo Imi::getRuntimePath('a.jpg');
    
    // 返回:运行时目录路径/a/b.jpg
    echo Imi::getRuntimePath('a', 'b.jpg');

    getModeRuntimePath

    获取模式对应的运行时目录路径

    // 返回:运行时目录路径/swoole/a/b.jpg
    echo Imi::getModeRuntimePath('swoole', 'a', 'b.jpg');

    getCurrentModeRuntimePath

    获取当前模式对应的运行时目录路径

    // 返回:运行时目录路径/swoole/a/b.jpg
    echo Imi::getModeRuntimePath('a', 'b.jpg');

    buildRuntime

    构建运行时缓存

    /**
     * 构建运行时缓存.
     *
     * @param string|null $cacheName 如果为空则默认为runtime
     */
    public static function buildRuntime(?string $cacheName = null): void

    loadRuntimeInfo

    /**
     * 从文件加载运行时数据
     */
    public static function loadRuntimeInfo(string $cacheName): bool

    incrUpdateRuntime

    /**
     * 增量更新运行时缓存.
     */
    public static function incrUpdateRuntime(array $files): void

    checkReusePort

    /**
     * 检查系统是否支持端口重用.
     */
    public static function checkReusePort(): bool

    eval

    eval() 函数的安全替代方法

    Imi::eval('echo "hello imi";');

    isWSL

    检测是否为 WSL 环境

    /**
     * 检测是否为 WSL 环境.
     */
    public static function isWSL(): bool

    getLinuxVersion

    获取 Linux 版本号

    /**
     * 获取 Linux 版本号.
     */
    public static function getLinuxVersion(): string

    getDarwinVersion

    获取苹果系统版本

    /**
     * 获取苹果系统版本.
     */
    public static function getDarwinVersion(): string

    getCygwinVersion

    /**
     * 获取 Cygwin 版本.
     */
    public static function getCygwinVersion(): string

    isDockerEnvironment

    判断是否为 Docker 环境

    /**
     * 判断是否为 Docker 环境.
     */
    public static function isDockerEnvironment(): bool

    checkAppType

    检查应用运行类型

    /**
     * 检查应用运行类型.
     */
    public static function checkAppType(string $appType): bool
    目前支持:swoole、workerman、fpm、cli