sul mio posto di lavoro (solo php) abbiamo una classe base per l'astrazione del database. Quando si desidera aggiungere una nuova tabella di database al livello di base, è necessario creare una sottoclasse di questa classe di base e sovrascrivere alcuni metodi per definire il comportamento individuale per l'utilizzo di questa tabella. Il comportamento normale dovrebbe rimanere lo stesso.Implementazione corretta di funzioni virtuali in PHP?
Ora ho visto molti nuovi programmatori nella nostra azienda, che sostituiscono il metodo per il comportamento predefinito. Alcuni sono così "simpatici" da mettere in atto tutti i comportamenti di default e aggiungono solo cose individuali dove gli piace, altri si uccidono cercando di usare la baseclass e il loro erede.
Il mio primo pensiero per risolvere questo problema, è stato quello di pensare a metodi astratti che dovrebbero essere ignorati ereditando le classi. Ma accanto ad altri argomenti contro i metodi astratti, "astratto" non mostra semplicemente perché la baseclass non può essere utilizzata da sola e perché questa funzione deve essere sostituita da.
Dopo aver cercato su google, non ho trovato una buona risposta all'implementazione di funzioni virtuali "reali" in php (solo che esiste una funzione virtuale, che quasi uccide ogni speranza di un'implementazione concreta).
Quindi, cosa faresti con questo argomento?
Mi dispiace ma non ho capito bene la tua domanda, quando dici "funzioni virtuali" stai parlando dei metodi magici __call() e __callStatic()? O funzioni lambda? –
Penso che intenda il metodo di esclusione. http://en.wikipedia.org/wiki/Method_overriding che in C++ si riferisce a come funzioni virtuali. –