今天写静态方法遇到一个问题,  我们在调用类中的静态方法时需要初始化一些私有静态变量或者调用其他私有方法, 但是类里面没有静态构造函数,无法在调用静态方法时候初始化一些数据

于是我们可以使用下面这种方法间接实现

<?php

namespace api\aaa;

class Test 
{
    private static $initialize;

    /**
     * 构造函数
     * constructor.
     */
    private function __construct()
    {
        // TODO 初始化配置

    }

    /**
     * 初始化静态类
     *
     * @return Test
     */
    public static function initialize(): Test
    {
        if (!self::$initialize instanceof self) {
            return new self();
        }

        return self::$initialize;
    }

    public static function arrayTest() {
        // demo
    }

}

 

调用的时候

<?php

use api\aaa;

Test::initialize()::arrayTest();

 

就可以实现在静态类前初始化了

 

参考地址

https://www.cnblogs.com/shamohai/p/11158206.html

https://www.php.cn/php-weizijiaocheng-373481.html

https://zhidao.baidu.com/question/1771739601303664900.html

https://www.codenong.com/5368199/

https://www.cnblogs.com/52php/p/5658171.html

https://qa.1r1g.com/sf/ask/2273223291/