CakePHP体系结构
我试图找出是否有一种方法可以共享多个CakePHP应用程序的控制器、模型和视图,但如果需要,可以覆盖其中的特定方法。例如,如果我有以下结构CakePHP体系结构,php,cakephp,directory-structure,Php,Cakephp,Directory Structure,我试图找出是否有一种方法可以共享多个CakePHP应用程序的控制器、模型和视图,但如果需要,可以覆盖其中的特定方法。例如,如果我有以下结构 /my_cool_app /core /app /Model Person.php ->findPerson(); ->mapPerson(); /orgs /org_1 /app /Model Person.php
/my_cool_app
/core
/app
/Model
Person.php
->findPerson();
->mapPerson();
/orgs
/org_1
/app
/Model
Person.php
->mapPerson();
我想做的是让org_1/app中的CakePHP应用程序使用/core/app中的所有控制器、模型、视图等,但如果文件存在于该结构中(例如,org_1/app/Model/Person.php),则提供覆盖任何特定方法的能力
这可行吗?绝对可能。您的目录如下:
/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 {
}
?>
以及以下观点:
<?php
debug($models);
?>
查看CakePhp了解更多信息
$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
)