PHP OOP di PHP per dividere la classe di basso livello in due

2

Ciò che ho ottenuto ora è un oggetto di basso livello che ha molti metodi e la sua difficile navigazione attraverso cui voglio suddividerlo, tuttavia le funzioni hanno logicamente le stesse funzionalità solo un'implementazione differente

class HTMLManipulator {

   function findElementById($html, $element) {
     ...
   }

   function setElementById($html, $element, $newValue) {
      ...
   }

   function findElementByIdDom(DOMDocument $dom, $element) {
     ...
   }

   function setElementByIdDom(DOMDocument $dom, $element, $newValue) {
      ...
   }


   ... few other unique functions...

   function TidyUpHTML($arg) {
      ...
   }

}

Uso sia la funzione findElementById , setElementById e findElementByIdDom , setElementByIdDom in diverse parti della mia applicazione, quindi non posso semplicemente eliminarne una, mi chiedo quale approccio dovrei prendere per dividere questa classe?

Dovrei creare interface e due classi implementarlo vs semplicemente creare una classe genitore con tutte le funzionalità ed estenderla sovrascrivendo le funzionalità chiave della classe genitore quando necessario?

class HTMLManipulator {

   function findElementById(DOMDocument $dom, $element) {
     ...
   }

   function setElementById(DOMDocument $dom, $element, $newValue) {
      ...
   }


   ... few other unique functions...

   function TidyUpHTML($arg) {
      ...
   }

}

.

//only overwrites this two methods from parent class inherits the rest
class HTMLManipulatorString extends HTMLManipulator {

   function findElementById($html, $element) {
     ...
   }

   function setElementById($html, $element, $newValue) {
      ...
   }

}

page_one.php

$obj = new HTMLManipulator();
$content = $obj->findElementById($dom, "pageFooter");
$obj->setElementById($dom, "pageContent", "Hello World!");          
$obj->TidyUpHTML($content);
...

page_two.php

$obj2 = new HTMLManipulatorString();
$menu = $obj->findElementById($html, "mainMenu");
$obj->setElementById($html, "pageFooter", "Copyright 2016");
$obj->TidyUpHTML($menu);
...

Questo codice è un esempio di pratica OOP scorretta con qualsiasi mezzo e utilizzeresti questo approccio rispetto alla creazione di% condivisi% co_de e due classi che lo implementano?

    
posta Roman Toasov 22.11.2016 - 02:30
fonte

0 risposte

Leggi altre domande sui tag