最近在封装Redis的操作类,想要实现Redis::setHash()
这样的调用,但是在调用这个静态方法前,要先连接Redis:$redis->connect('127.0.0.1', 6379);
,本来想把这个代码写在构造方法里,但是一想不对,调用PHP的静态方法时没有实例化对象,是不走构造方法的。最终使用了__callStatic
和call_user_func_array
这两个函数实现。
代码如下:
RedisDb.php
1 | class RedisDb |
RedisUtil.php
1 | class RedisUtil extends RedisDb |
参考:
call_user_func_array 动态调用方法
PHP类中在所有方法被调用前执行一段代码
魔术方法之__call
与__callStatic
方法