11

我很困惑。

我在 Reddit 上请了几位开发人员审查我的代码。它看起来像这样。

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

所以它加载 register.php,用翻译替换 {error_message}。(对不起,这个用户名正在使用中。请选择另一个。)

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

有人可以解释一下,如果这是一种不好的做法,Laravel 是一个优雅的框架,那是怎么回事?

4

1 回答 1

28

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

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

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

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

我再说一遍,请考虑不要在你的领域层深处使用外观。

于 2013-02-26T04:05:01.850 回答