classe A
-titolo
-get+set titolo
-abstract
-get+set abstract
classe B
-abstract
-get+set abstract
-ordine
-get+set ordine
Come vedete nessuna delle due può ereditare dall'altra (erediterebbe anche un attributo e relativi get+set che non c'entrano).
La prima soluzione che mi viene in mente è "molto bene, ristruttiriamo!"
classe Titolo
-titolo
-get+set titolo
classe Abstract
abstract
-get+set abstract
classe Ordine
-ordine
-get+set ordine
classe A extends Titolo, Abstract
classe B extends Abstract, Ordine
Piccolo problema: PHP (come Java, ma al contrario del C++) non supporta l'ereditarietà multipla delle classi (ma lo supporta per le interfacce: e qui un bel "maiiial, stra-utile!!" non ce lo toglie nessuno...).
Avete qualche suggerimento su come risolvere la situazione?
Vi dico a cosa avevo pensato:
* fare dei "pezzi di codice" (tipo "titolo.php") quindi usare require. Peccato che si può fare solo a livello di metodo, e non buttata lì dentro la classe.
* Usare l'ereditarietà al contrario: fare una megaclasse astratta che implementi TUTTE le funzionalità, e quindi creare classi che estendano quella, overlodando con throw new NotImplementedException() le cose che non mi servono. Sinceramente però non mi sembra Buona Programmazione..
A voi la parola..