各位大神好,我实现了一个日志工具基类,并派生了两个子类,一个是运维日志类,一个是业务日志类,并在基类中设置了一个静态变量希望能用以区分两个子类,但在调用静态方法时,实际上完全不是想象中的情况,代码如下:
// 日志工具基类
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
提交
取消