Je travaille avec un CMS, Joomla, et il y a une classe de base qui rend un ensemble de paramètres à un formulaire, JParameter. Fondamentalement, il a une fonction render()
qui produit du code HTML chargé de tables, ce qui n'est pas cohérent avec le reste de mon site.Modifier la classe d'un objet à l'exécution
Pour les problèmes de maintenabilité, et parce que je ne sais pas où cela est utilisé, je ne veux pas changer le code de base. Ce qui serait idéal serait de pouvoir définir une nouvelle classe qui étend JParameter, puis de convertir mon objet $ params vers cette nouvelle sous-classe.
// existing code --------------------
class JParameter {
function render() {
// return HTML with tables
}
// of course, there's a lot more functions here
}
// my magical class -----------------
class MyParameter extends JParameter {
function render() {
// return HTML which doesn't suck
}
}
// my code --------------------------
$this->params->render(); // returns tables
$this->params = (MyParameter) $this->params; // miracle occurs here?
$this->params->render(); // returns nice html
Je ne pense pas que ce soit possible d'une manière agréable. (D'accord, c'est possible, mais la façon dont je l'ai vu était un hack impliquant serialize() et str_replace() Probablement pas ce que vous voulez en considérant la maintenabilité est le problème ici ...) – flussence
serialize et str_replace? yikes! – nickf