最後活躍 1750107100

Цепочка вызовов методов в статических классах

php

修訂 a7088a5b1c04286e1af2f47d50110e709437a0a6

php_static_chain_calls.md 原始檔案

Да, в PHP можно сделать вызов

Cache::redis()::keys('*')

Делается это так:

class Cache {

    public static function redis():RedisHelper
    {
        return new RedisHelper();
    }
}

class RedisHelper {

    public static function keys(string $pattern = '*'):array
    {
        return 'something';
    }

    // только если мы хотим получить доступ к полям внешнего класса, их нужно инициализировать.
    // сначала создать метод инициализации
    // а потом вызвать его в конструкторе или ините родительского класса
    // ... или коннекторе 
    
    public static function init(\Arris\Toolkit\RedisClient $redis_connector, bool $is_redis_connected, LoggerInterface $logger): void
    {
        self::$logger = $logger;
        self::$is_redis_connected = $is_redis_connected;
        self::$redis = $redis_connector;
    }

}