This commit is contained in:
parent
417b71f447
commit
c02c83d4a7
1 changed files with 31 additions and 1 deletions
|
@ -108,10 +108,40 @@ class Doctrine_Relation_Parser
|
||||||
if (substr($name, -8) === 'Template') {
|
if (substr($name, -8) === 'Template') {
|
||||||
$name = substr($name, 0, -8);
|
$name = substr($name, 0, -8);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
$parent = new ReflectionClass($this->_table->getComponentName());
|
||||||
|
|
||||||
if ( ! class_exists($name)) {
|
if ( ! class_exists($name)) {
|
||||||
$template = new $templateName();
|
$template = new $templateName();
|
||||||
print_r($template->getTable()->getColumns());
|
|
||||||
|
$conn = $this->_table->getConnection();
|
||||||
|
|
||||||
|
$refl = new ReflectionClass($templateName);
|
||||||
|
$file = file($refl->getFileName());
|
||||||
|
|
||||||
|
$parentMethods = $refl->getParentClass()->getMethods();
|
||||||
|
|
||||||
|
foreach ($parentMethods as $k => $method) {
|
||||||
|
$parentMethods[$k] = $method->getName();
|
||||||
|
}
|
||||||
|
|
||||||
|
$lines[] = 'class ' . $name . ' extends Doctrine_Record';
|
||||||
|
$lines[] = '{';
|
||||||
|
foreach ($refl->getMethods() as $method) {
|
||||||
|
if ($method->getDeclaringClass()->getName() === $refl->getName()) {
|
||||||
|
$start = $method->getStartLine() - 1;
|
||||||
|
$end = $method->getEndLine() - 1;
|
||||||
|
|
||||||
|
$lines = array_merge($lines, array_slice($file, $start, ($end - $start) + 1));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
$lines[] = '}';
|
||||||
|
$fileName = dirname($parent->getFileName()) . DIRECTORY_SEPARATOR . $name . '.php';
|
||||||
|
|
||||||
|
if (file_exists($fileName)) {
|
||||||
|
throw new Doctrine_Template_Exception("Couldn't generate class for template.");
|
||||||
|
}
|
||||||
|
eval(implode("\n", $lines));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
Loading…
Add table
Reference in a new issue