Cita: ... simplemente inyectaría el Provider vía constructor
Ese mecanismo de inyectar el provider en el constructor está disponible en Laravel:
Por un lado, vinculamos una inteface con un repositorio
Código PHP:
Ver originalApp::bind(
'Repositories\PostRepositoryInterface',
'Repositories\RedisPostRepository'
);
Y por otro, en el constructor del controlador simplemente tenemos algo así:
Código PHP:
Ver originaluse Repositories\PostRepositoryInterface as Post;
class PostsController extends BaseController {
protected $post;
public function __construct(Post $post)
{
$this->post = $post;
}
public function index()
{
$posts = $this->post->all();
return View::make('posts.index', ['posts' => $posts]);
}
}
De tal manera que si al controlador no le pasamos un Provider Laravel instancia el bind que tenga definido.
Supongo que en otros frameworks puede haber otros mecanismos parecidos. O puede que este sistema tampoco sea lo más recomendado. Todavía no lo he puesto en práctica