Uno degli sviluppatori che lavora con me sta seguendo il principio aperto / chiuso per aggiungere funzionalità a un modello estendendoci dal nostro framework ORM.
class BaseModel extends ORM {
...
}
Tutti i nostri modelli ora ereditano BaseModel
e questo modello funziona bene nel contesto della nostra applicazione.
class Product extends BaseModel {
...
}
Il problema si presenta quando abbiamo provato a utilizzare i modelli come se fossero estesi direttamente dall'ORM, utilizzare alcune delle funzionalità di base:
$product = Product::factory();
$product->name = 'foo';
$product->price = 9.99;
$product->save();
Questo codice avrebbe dovuto funzionare bene ma non è riuscito perché ora il metodo factory richiede un elenco di parametri.
Penso che finché i modelli funzionino bene nel contesto del nostro prodotto siamo buoni; ma ho anche sentimenti contrastanti sul non supportare alcune delle funzionalità di base della classe genitore.
Pensieri?