public function generateClassName($tableName, $useSchemaName = null)
{
//Yii::trace("Generating class name for '{$tableName}'...", __METHOD__);
if (isset($this->classNames2[$tableName])) {
//Yii::trace("Using '{$this->classNames2[$tableName]}' for '{$tableName}' from classNames2.", __METHOD__);
return $this->classNames2[$tableName];
}
if (isset($this->tableNameMap[$tableName])) {
Yii::trace("Converted '{$tableName}' from tableNameMap.", __METHOD__);
return $this->classNames2[$tableName] = $this->tableNameMap[$tableName];
}
if (($pos = strrpos($tableName, '.')) !== false) {
$tableName = substr($tableName, $pos + 1);
}
$db = $this->getDbConnection();
$patterns = [];
$patterns[] = "/^{$this->tablePrefix}(.*?)\$/";
$patterns[] = "/^(.*?){$this->tablePrefix}\$/";
$patterns[] = "/^{$db->tablePrefix}(.*?)\$/";
$patterns[] = "/^(.*?){$db->tablePrefix}\$/";
if (strpos($this->tableName, '*') !== false) {
$pattern = $this->tableName;
if (($pos = strrpos($pattern, '.')) !== false) {
$pattern = substr($pattern, $pos + 1);
}
$patterns[] = '/^' . str_replace('*', '(\\w+)', $pattern) . '$/';
}
$className = $tableName;
foreach ($patterns as $pattern) {
if (preg_match($pattern, $tableName, $matches)) {
$className = $matches[1];
Yii::trace("Mapping '{$tableName}' to '{$className}' from pattern '{$pattern}'.", __METHOD__);
break;
}
}
$returnName = Inflector::id2camel($className, '_');
if ($this->singularEntities) {
$returnName = Inflector::singularize($returnName);
}
Yii::trace("Converted '{$tableName}' to '{$returnName}'.", __METHOD__);
return $this->classNames2[$tableName] = $returnName;
}