最近在封装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方法