为了账号安全,请及时绑定邮箱和手机立即绑定

[已解决]php中静态成员方法和静态成员变量是不是不支持多态?

[已解决]php中静态成员方法和静态成员变量是不是不支持多态?

PHP
哔哔one 2019-03-15 07:45:25
各位大神好,我实现了一个日志工具基类,并派生了两个子类,一个是运维日志类,一个是业务日志类,并在基类中设置了一个静态变量希望能用以区分两个子类,但在调用静态方法时,实际上完全不是想象中的情况,代码如下: // 日志工具基类 class LogTool { protected static $type; public static function debug($msg) { switch (self::$type) { case 'biz': echo '把日志写入数据库表1'; break; case 'opt': echo '把日志写入数据库表2'; break; default: echo 'error'; } } // 其他代码省略 } // 运维日志类 class OptTool extends LogTool { protected static $type = 'opt'; } // 业务日志类 class BizTool extends LogTool { protected static $type = 'biz'; } // 调用代码 BizTool::debug('王小虎已登录'); 代码如上,实际上函数 dosomething 的运行情况是每次都输出 'error',因为在执行静态方法debug时,静态成员 $type 是空值;但是如果我把 debug 函数在子类中再实现一次,则运行时 $type 变量就是有值的。可是这样做就完全没意义了,抽象父类出来就是为了减少重复代码的,现在两个子类除了写入日志的表不同,其他完全相同,结果这样的结果弄得我欲哭无泪。 恳请大神们指点一二,万分感谢!
查看完整描述

目前暂无任何回答

  • 0 回答
  • 0 关注
  • 605 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信