我使用的是使用Zend Framework Application工具创建的默认框架代码,我添加了一些自动加载器魔术,以便自动从正确的目录(本例中为Default_Model_TableName
)加载名为Default_<*>_<*>
的任何类。Zend_DB_Table_Abstract中的关系
应用程序/模型/ ProjectCategories.php:
<?php
class Default_Model_ProjectCategories extends Zend_Db_Table_Abstract {
protected $_name = 'categories';
protected $_dependentTables = array('Projects');
}
应用程序/模型/ Projects.php:
<?php
class Default_Model_Projects extends Zend_Db_Table_Abstract {
protected $_name = 'projects';
protected $_referenceMap = array(
'Category' => array(
'columns' => 'cid',
'refTableClass' => 'ProjectCategories',
'refColumns' => 'id',
'onUpdate' => self::CASCADE,
'onDelete' => self::CASCADE,
)
);
}
什么,我试图做的是以下几点:
<?php
$categories = new Default_Model_ProjectCategories();
$category = $categories->find('1');
$category->findProjects();
在这一点上,我得到一个错误,我无法找到Projects.php,或者该文件可能没有包含名为Projects的类。
此时,我将Projects.php放置在由框架(/../library/)设置的包含路径中,并找到该文件,但现在我失去了整个目录结构,因为我必须将Default_Model_Projects
重命名为Projects
。我能够得到的一切工作,如果我把文件放回原来的位置,并改变
protected $_dependentTables = array('Projects');
到
protected $_dependentTables = array('Default_Model_Projects');
但这也意味着我的->findProjects()
现在变成->findDefault_Model_Projects()
。
有没有办法告诉它,当我在寻找findProjects()
它必须实例化Default_Model_Projects
?这是Zend Framework中缺少的东西吗,还是我试图以某种不属于它的方式来激励某些东西?你是如何解决这个问题的?
You apparen tly没看完我的整个问题... – 2009-06-14 10:05:36