Bonjour,
j'ai lu qu'il ne faut pas injecter dans les class elle même alors j'ai quelque questions la dessus (sans phpDI)
si je montre l'exemple de ma pagination GitHub pagination
Imaginont que j'en ai besoin dans ma page home je ferais comme ça avec un contoller admettons qu'il extends de Renderer qui contien les méthode thisPDO, thisRoute etc :
class HomeController extends Renderer
public function home()
{
$pagination = new Pagination(
$this->thisPDO(),
$this->ThisRoute(),
'SELECT COUNT(id) FROM f_topics',
null,
$perpage,
$this->app()
);
$this->render('home', compact('pagination'));
}
mon Renderer qui extrait le $this->render
:
public function render(string $fichier, array $data = []) {
// Extraction des données
extract($data);
// Rendu de la vue
ob_start();
require_once $viewPath;
$contentForLayout = ob_get_clean();
// Chargement du layout principal
require_once theme.php;
}
Mon router qui renvois la vue home a l'index ressemblerais a ça :
/*
* target === filename
*/
public function home()
{
if($this->matchRoute()['target'] === 'home')
{
return (new \Controllers\HomeController)->home();
}
}
Et là je me pose quand même la question puisse que je n'intancie pas une class dans une autre class, mais dans mon premier exemple je dois quand même instancier ma pagination et elle a besoin des routes, de ma BDD etc. a un moment je dois bien faire un new Database()
pour que ça fonctionne et donc si on instancie pas une dans une class on le fais où car le but de l'otienté objet c'est bien de passer par des class de faire des methode etc. ?
J'essaie vraiment de comprend seul pour ma culture personnel mais là j'ai pas compris.