通過__callStatic()將類的方法轉爲靜態方法的思路

方法靜態化之後的好處就是,不再需要每個使用的地方都去new obj。

可以大大簡化代碼,而且可以提升逼格。接下來一個demo帶你裝大佬【推眼鏡】

1.在類中加入 __callStatic方法

public static function __callStatic($name, $arguments)
    {
        $mappingArr = [
            '將來要寫在::後面的方法名' => '真實的方法名',
            // 'Create' => '_Create',
        ];
        if (array_key_exists($name, $mappingArr)) {
            return call_user_func_array([new Self::class(), $mappingArr[$name]], $arguments);
        } else {
            throw new \think\Exception('我丟雷樓某 。。 方法不存在', 10086);
        }

    }

__callStatic方法就是在靜態上下文中調用一個不可訪問方法時所以通過這個可以實現

在外部類使用的時候,只需要use namespace\obj 然後obj::methondName()即可。

關於call_user_func_array()方法,自行百度。

更多技術交流,請加羣 8989 0449 ,更多大佬等你來玩

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章