J'ai créé un objet d'affichage qui contient l'en-tête, barre latérale et le pied de page:Est-ce mauvais objet orienté PHP?
class Display {
protected $framework;
public $mysql;
public function __construct() {
$this->mysql = new MySQL();
$this->framework .= $this->header();
$this->framework .= $this->body();
$this->framework .= $this->sidebar();
$this->framework .= $this->footer();
}
private function header(){ /* blah */ }
private function body(){ }
private function sidebar(){ /* blah */ }
private function footer(){ /* blah */ }
public function displayPage(){
print $this->framework;
}
}
Sur chaque page j'ai créé un objet qui étend l'objet d'affichage, avec le code pour le corps:
class IndexPHP extends Display {
public function body(){
$this->user = new User();
return '<div class="body">Hello ' . $this->user->getName() . '</div>';
}
}
$page = new IndexPHP();
$page->displayPage();
Ai-je créé un problème en imbriquant trop les objets? Par exemple, dans l'objet Utilisateur, comment accéder à l'objet MySQL déjà initié?
class User {
protected $name;
public function __construct() {
$this->id = /* MySQL object query here */
}
}
Je ne pense pas que ce soit mauvais. Il a juste besoin de passer les dépendances de l'extérieur. – troelskn
C'est impossible à maintenir. Cela fonctionnerait bien pour un petit projet de jouet, mais je ne livrerais pas de code comme celui-ci pour un système de production. –
Merci d'avoir pris le temps de commenter. Je suis nouveau à OOPHP, donc les conseils aident vraiment. – timborden