web-dev-qa-db-fra.com

Le meilleur moyen d’étendre les cours de base en thème?

J'ai besoin d'ajouter des fonctions à mes objets WP_User, pour être utilisé comme ceci:

<?php
// in my templates :
$user = new User($id);
$user->sendHelloWorldEmail();

// in my functions.php
class User extends WP_User {
    public function sendHelloWorldEmail(){
        // do stuff ...
    }
}

Ma question est la suivante: quel est le meilleur moyen de surcharger les classes principales (WP_Post/WP_User ...)?

Et: est-ce une bonne idée ou existe-t-il un meilleur moyen d'y parvenir (avec la programmation d'objets)?

3
Vincent Wasteels

Ce que vous faites va fonctionner, et est correct dans la mesure où PHP va.

Que ce soit une bonne idée ou non dépend vraiment de ce que vous faites spécifiquement et si vous pouvez le faire avec des crochets - actions et filtres-- à la place. Si vous pouvez le faire avec des crochets, vous devriez probablement, mais votre question n’a pas suffisamment de détails pour permettre une excellente réponse.

Je ne pense pas que l'extension des classes de base soit nécessairement "mauvaise", mais vous pouvez vous préparer à une maintenance supérieure à la normale, car votre classe étendue devra peut-être être modifiée si le parent le souhaite, alors soyez-en conscient. C'est le "problème de la classe de base fragile" .

Ce n'est pas vraiment "surcharger" , en passant, et dans PHP "surcharger" n’est pas vraiment ça quand même .

2
s_ha_dum