# Dependency injection

# Prefer contracts

Always try to use contracts for dependency injection when available instead of concrete implementation.

Bad: Illuminate\Auth\AuthManager or Illuminate\Foundation\Application

Good: Illuminate\Contracts\Auth\Factory or Illuminate\Contracts\Foundation\Application