private function _buildTableView($pathTo, $item) { $objectType = $item['type']; $className = str_replace('.', '_', $item['name']); if (isset($item['conf']['columns']) && count($item['conf']['columns']) > 0) { foreach ($item['conf']['columns'] as $columName => $conf) { $_consts[] = ' const ' . strtoupper($columName) . ' = "' . $columName . '";'; $_conf[] = ' self::' . strtoupper($columName) . ' => array(Nov\\Types::' . $this->_getNovType($conf['native_type']) . '),'; $_fcts[] = ' function ' . $columName . '() { return $this->_isObject ? $this->_recordset->{' . $className . '::' . strtoupper($columName) . '} : $this->_recordset[' . $className . '::' . strtoupper($columName) . ']; }'; } } $consts = implode("\n", $_consts); $conf = implode("\n", $_conf); $fcts = implode("\n\n", $_fcts); $schema = is_null($this->_schema) || $this->_db->getDriver() == 'sqlite' ? 'null' : "'{$this->_schema}'"; $class = <<<EOD <?php namespace Orm\\{$this->_schema}; use \\Nov; class {$className} extends Nov\\Db\\Orm\\{$objectType} { protected \$_schema = {$schema}; protected \$_object = "{$item['name']}"; {$consts} protected \$_conf = array( {$conf} ); } class {$className}_Record { /** * @param \\Nov\\Orm\\Record \$recordset * @return \\Orm\\{$this->_schema}\\{$className}_Record */ static function factory(\$recordset) { return new {$className}_Record(\$recordset); } private \$_recordset; function __construct(\$recordset) { \$this->_isObject = \$recordset instanceof Nov\\Db\\Orm\\Record; \$this->_recordset = \$recordset; } {$fcts} } EOD; $this->_makeFile($pathTo, $item['name'], $class); }