Sono abbastanza nuovo nell'usare i tratti in PHP e mi chiedo se esiste un modo per garantire che una classe che include un tratto abbia proprietà particolari.
So che puoi usare qualcosa di simile al seguente per assicurarti che l'uso della classe abbia metodi particolari.
protected abstract function some_function();
C'è un modo per fare lo stesso genere di cose per le variabili membro, dal momento che un tratto ha accesso alle variabili membro nella classe using?
Posso solo documentare il requisito, ma sarebbe bello lanciare un'eccezione nel caso in cui una classe che cerca di utilizzare un tratto manchi di una proprietà richiesta.
Il più vicino che riesco a trovare è creare una funzione nel tratto che tenta di afferrare la variabile e restituirla ... e lanciare un'eccezione se non viene trovata. Quindi i metodi nel tratto possono utilizzarlo per accedere alla proprietà delle classi genitore invece di accedervi direttamente.
Pensieri, suggerimenti e raccomandazioni sono i benvenuti ... poiché mi sto solo abituando ai tratti.
Il caso d'uso è che ho determinate cose che girano solo sulla faccia pubblica del sito e altre cose che funzionano solo sulla faccia privata del sito, ma condividono entrambe un insieme comune di funzionalità di base (varie impostazioni di configurazione , gestione degli errori, ecc.)
Potrei evitare di usare i tratti rendendo estremamente lunghi i file di classe per ognuna delle classi ereditate, ma sto cercando di mantenere la stessa funzionalità insieme in file più piccoli, se possibile.
Suppongo che una possibilità sia richiedere una variabile di accesso nella classe chiamante per restituire la proprietà ricercata.
abstract function get_my_value();
Qualcos'altro che potrebbe funzionare in modo pulito?
Grazie in anticipo!