我一直在使用自动加载的 Doctrine_Record 类一段时间;但经过一番阅读,我决定我想同时实现 Doctrine_Records 和自定义表类。
所以我把这个添加到我的引导程序中
$manager->setAttribute(
Doctrine::ATTR_AUTOLOAD_TABLE_CLASSES,
true
);
这使得自定义表类工作得很好......但它打破了自动加载记录!
如何使两者都自动加载?
IE new User.php 获取我的 User Doctrine_Record 类和 Doctrine_Core::getTable('User') 获取我的自定义 UserTable 类。
这是我尝试实现自定义表之前它的外观(工作):
public function _initDoctrine() {
require_once 'Doctrine.php';
/*
* Autoload Doctrine Library and connect
* use appconfig.ini doctrine.dsn
*/
$this ->getApplication()
->getAutoloader()
->pushAutoloader(array(
'Doctrine',
'autoload'),
'Doctrine');
$manager = Doctrine_Manager::getInstance();
$manager->setAttribute(
Doctrine::ATTR_AUTO_ACCESSOR_OVERRIDE,
true
);
$manager->setAttribute(
Doctrine::ATTR_MODEL_LOADING,
Doctrine::MODEL_LOADING_CONSERVATIVE
);
// try these custom tables out!
// $manager->setAttribute( Doctrine::ATTR_AUTOLOAD_TABLE_CLASSES, true );
$config = $this->getOption('doctrine');
$conn = Doctrine_Manager::connection($config['dsn'], 'doctrine');
return $conn;
// can call flush on the connection to save any unsaved records
}
谢谢
编辑:
让我澄清一下。
不仅仅是自定义类。我已经使用了扩展 Doctrine_Record 的自定义类。
class Model_User extends Doctrine_Record {}
$foo = new Model_User;
我的大部分应用程序目前都在解决这个问题,并且在这方面不会改变。
但是,我也想使用自定义表
class UserTable extends Doctrine_Table {}
$bar = Doctrine_Core::getTable('User');
但是,一旦我启用此(自定义表类)功能,就可以使用 Table 后缀调用 Doctrine_Table 类。我之前扩展并直接调用的任何 Doctrine_Record 类都停止工作!我想两者都用!