<?php
interface Model {
public function tableName(): string;
}
abstract class AbstractTable implements Model {
public function tableName(): string {
return constant('static::TABLE_NAME');
}
}
final class SomeTable extends AbstractTable {
public const TABLE_NAME = 'some_table';
}
$table = new SomeTable();
var_dump($table->tableName());
// $pdo->prepare(sprintf("SELECT * FROM %s", $table->tableName());