试图理解为什么Laravel的许多静态方法不被认为是不好的做法

时间:2013-02-26 03:02:07

标签: php laravel

我很困惑。

我已经让Reddit上的一些开发人员查看了我的代码。它看起来像这样。

Template::load('register', array('error_message' => Language::translate('username_in_use'));

所以它加载register.php,用翻译替换{error_message}。 (抱歉,此用户名正在使用中。请选择其他用户名。)

他们说使用太多静态调用是一种不好的做法。然而他们建议使用Laravel框架,它完全摆脱$ this并使用静态调用。

有人可以解释一下,如果这是不好的做法,Laravel是一个优雅的框架吗?

1 个答案:

答案 0 :(得分:28)

静态是无所不在的,完全破坏了可测试性,因为你不能只重置状态。此外,任何事情都可能以代码的其他方面无法预测的方式影响状态,从而导致可能出现无法预测的行为。

Laravel 4通过使用静态“外墙”来防止这种情况。这些外观是“IoC解析的语法简写”。它们提供语法糖并防止紧密耦合的代码。

外观解决的类可以更改,并允许您注入模拟系统或任何您想要的。

当然,这并没有真正解决静态访问的其他方面。这就是你不能只注入不同的功能。但是,使用Laravel应用程序,您通常不会在域中使用外观。它更适用于Web传输层,它非常有用,因为Web传输层已经与您的框架紧密耦合,这只是通过为您的应用程序层创建某种类似于DSL的东西来充分利用这一事实。 / p>

我再说一遍,请考虑不要在您的域图层深处使用外墙。