/**
* Create and initialize Table instance
*/
private function __construct()
{
$tableClass = static::class;
// autodetect model name
if (!$this->model) {
$model = substr($tableClass, strpos($tableClass, '\\') + 1);
$model = substr($model, 0, strpos($model, '\\', 2));
$this->model = $model;
}
// autodetect table name - camelCase to uppercase
if (!$this->table) {
$table = preg_replace('/(?<=\\w)(?=[A-Z])/', "_\$1", $this->model);
$this->table = strtolower($table);
}
// autodetect row class
if (!$this->rowClass) {
$rowClass = substr($tableClass, 0, strrpos($tableClass, '\\', 1) + 1);
$this->rowClass = $rowClass . 'Row';
}
// setup default select query
if (empty($this->select)) {
$this->select = "SELECT * " . "FROM " . DbProxy::quoteIdentifier($this->table);
}
Relations::addClassMap($this->model, $tableClass);
$this->init();
}