如何在不使用PHP中的global的情况下将条件标志传递给类方法

时间:2014-09-09 01:23:36

标签: php oop

PHP 中,我有一个Error类来处理我的应用程序中的所有错误。它的方法签名是:

class Error {
    public static function show($code, $message) { ... }
}

其他类DatabaseMemcachedSettings如果内部发生错误则调用Error::show()。我有一个特例,我希望Error::show()在执行正常逻辑之前更新MongoDB中的记录。但是,我不想在is_special_case方法中添加新的函数参数Error::show(),因为这需要将标志传递给调用Error的每个类和函数

我想我可以设置一个全局global $is_special_case = true然后在Error::show()内检查是否设置了全局,但这只是错误的做法和糟糕的做法。有没有更好的方法来解决这个问题?

1 个答案:

答案 0 :(得分:1)

您也可以使用始终设置为false的Default parameters。在这种情况下,您可以处理该实例。

  function doSomething($isSomethingWrong = false){...}

是的,您将不得不更改您的功能定义,但您不必每次都传递它,而且您也可以在需要时传递它。