在PHP中,我有一个Error
类,用于处理应用程序中的所有错误。其方法签名为:
class Error {
public static function show($code, $message) { ... }
}
如果Database
、Memcached
、Settings
等其他类内部发生错误,则调用Error::show()
。我有一个特殊情况,我希望Error::show()
在执行其正常逻辑之前更新MongoDB中的记录。但是,我不想在Error::show()
方法中添加像is_special_case
这样的新函数参数,因为这需要向调用Error
的每个类和函数传递一个标志。
我想我可以设置一个全局global $is_special_case = true
,然后在Error::show()
内部检查是否设置了全局,但这感觉是错误的,而且是糟糕的做法。有更好的方法来处理这个问题吗?
您也可以使用Default parameters
,它总是设置为false。在这种情况下,你可以处理这个例子。
function doSomething($isSomethingWrong = false){...}
是的,你将不得不更改你的函数定义,但你不必每次都传递它,你也可以在需要的时候传递。