[DC-801] Multiple template implementation (setImpl) Created: 28/Jul/10 Updated: 28/Apr/12 |
|
| Status: | Open |
| Project: | Doctrine 1 |
| Component/s: | Behaviors |
| Affects Version/s: | 1.2.2 |
| Fix Version/s: | None |
| Type: | Bug | Priority: | Major |
| Reporter: | B. Ariston Darmayuda | Assignee: | Jonathan H. Wage |
| Resolution: | Unresolved | Votes: | 1 |
| Labels: | None | ||
| Description |
|
I feel curios when looking setImpl code on Doctrine. It set like this: public function setImpl($template, $class) { $this->_impl[$template] = $class; return $this; } I've made a template: class PersonTemplate extends Doctrine_Template { public function setTableDefinition() { //... Person fields (e.g. name, address, etc.) } } Now I create 2 class that implement PersonTemplate class Student extends Doctrine_Record { public function setUp() { $this->actAs('PersonTemplate'); } } class Teacher extends Doctrine_Record { public function setUp() { $this->actAs('PersonTemplate'); } } Then I set implementation on Doctrine_Manager: Doctrine_Manager::getInstance()->setImpl('PersonTemplate', 'Student')->setImpl('PersonTemplate', 'Teacher');
Now isn't it only Teacher record recognized as implementation of PersonTemplate ( when we see from this code: $this->_impl[$template] = $class; ) So how we can implement a template into seperated different doctrine record? |
| Comments |
| Comment by Richard C. Hidalgo [ 28/Apr/12 ] |
|
As the doc says "Tip The implementations for the templates can be set at manager, connection and even at the table level." it is supposed one can do: Doctrine_Manager::getInstance()->getTable('Student')->setImpl('PersonTemplate', 'Student');
Doctrine_Manager::getInstance()->getTable('Teacher')->setImpl('PersonTemplate', 'Teacher');
but for me it throws an exception: "Couldn't find concrete implementation for template PersonTemplate" thx |