静态方法是邪恶的,那么 Laravel 怎么会使用那么多静态调用呢?

Static methods are evil, then how come Laravel uses so much static calls?

如果您从事过测试驱动开发,尤其是 PHP,您可能知道静态方法很难测试。 PHPUnit 已弃用模拟静态调用。

伙计们如何模拟静态调用?如果静态对 TDD 不利,Laravel 如何测试其所有静态调用?

是的,Laravel 使用了很多门面,但您可以轻松 test everything。我建议您阅读 Jeffrey Way 的 "Laravel Testing Decoded",它会回答您的所有问题。

如果您不想使用外观,则不必,因为 Laravel 提供了很多全局助手(例如 redirect() 用于 Redirect::auth() 对应 Auth::session() 对应 Session:: 等)。此外,您始终可以使用 DI:

public function index(User $user)
{
    $users = $user->all();

而不是:

$users = User::all();