I have two classes and I need to use best OOP design solution.
class Dogs extends Animals {
CONST TABLE = 'dogs';
}
class Animals {
public static function getAll() {
// database query with table Dogs::TABLE...
}
}
- function getAll must be static
- I know that function getAll can be abstract, but then I must rewrite it in all classes extends Animals so I need to avoid this behavior
- I don't know if using table name as CONSTANT is OK (maybe better protected class variable?), but now I can call everywhere in project this constant