我使用的是使用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