绝对有可能。您的目录如下:
/your_cool_app
/base
/app
/Model
AppModel.php
BasePerson.php
/inherited
/app
/Model
InherietdPerson.php
然后在继承目录的 bootstrap.php 中,您可以使用它App::build()
来告诉应用程序在哪里寻找基本模型:
App::build(array(
'Model' => array(
//Path to the base models
$_SERVER['DOCUMENT_ROOT'] . DS
."your_cool_app" . DS
. "base" . DS
. "app" . DS
. "model"
)
));
BasePerson 将扩展 AppModel:
<?php
App::uses('AppModel', 'Model');
class BasePerson extends AppModel {
}
?>
InheritedPerson 扩展了 BasePerson:
<?php
App::uses('AppModel', 'Model');
class InheritedPerson extends BasePerson {
}
?>
现在要测试它是否有效,只需在继承的应用程序中创建一个控制器并检查您的应用程序加载了哪些模型:
$this->set('models', App::objects('Model'));
和观点:
<?php
debug($models);
?>
它应该打印出如下内容:
array(
(int) 0 => 'AppModel', //Is in the base app
(int) 1 => 'BasePerson', //Is in the base app
(int) 2 => 'InheritedPerson' //Is in the inherited app
)
查看 CakePhp 的App 类以获取更多信息。