Php 模块依赖关系

Php 模块依赖关系,php,yii,architecture,module,Php,Yii,Architecture,Module,“一些常用功能,如用户管理、评论管理,可按模块开发,以便在未来项目中轻松重用。”- 我有很多需要用户的项目。每次都是完全相同的数据库结构和功能。注册、登录、注销等。 Yii告诉我我可以重用模块。酷。。。让我们开始: 我有三个部分:用户,活动和网站 在此项目中,活动模块与用户模块(活动用户[user\u id,campaign\u id])有关系 WebItemModule与活动模块和用户模块有关系 我想在其他项目中重用UserModule,这些项目具有注册、登录、编辑等功能 实际情况: 使用gi

“一些常用功能,如用户管理、评论管理,可按模块开发,以便在未来项目中轻松重用。”-

我有很多需要用户的项目。每次都是完全相同的数据库结构和功能。注册、登录、注销等。 Yii告诉我我可以重用模块。酷。。。让我们开始:

我有三个部分:用户,活动和网站

在此项目中,活动模块与用户模块(活动用户[user\u id,campaign\u id])有关系

WebItemModule与活动模块和用户模块有关系

我想在其他项目中重用UserModule,这些项目具有注册、登录、编辑等功能

实际情况: 使用gii创建模型后,每个模块之间都有关系和依赖关系。 e、 g

要使用WebItemModule,必须包括用户和活动模块。 现在我甚至必须包括网站和活动模块才能使用UserModule

我还想跨多个项目更新UserModule,并可能使用一些基本模块构建一个框架

规划这样的体系结构的正确方法是什么

它们的作用是允许您在模块配置上为用户模型指定其他关系:

/**
 * @return array relational rules.
 */
public function relations()
{
    $relations = Yii::app()->getModule('user')->relations;
    if (!isset($relations['profile']))
        $relations['profile'] = array(self::HAS_ONE, 'Profile', 'user_id');
    return $relations;
}
因此,您可以执行以下操作:

'modules'=>array(
    'user' => array(
            ...
            'relations' => array(
              'categories' => array(CActiveRecord::HAS_MANY, 'Category', "user_id"),
              'account' => array(CActiveRecord::HAS_ONE, 'Account', "user_id"),
            ),
            ...
        ),
  ),

这是解决两国关系的好办法。但我仍然有一个问题,即如何为模块找到一个全局解决方案。如果WebItemModule有一个WebIteratingModel,我不想使用WebIterating::model()->。。。在我的应用程序或其他模块中。我希望通过接口或某种api与模型通信。编写Yii::app()->getModule('website')->website->getWebsiteRating(123)不是最好的主意。。。(->网站是模块init()中的组件集)
'modules'=>array(
    'user' => array(
            ...
            'relations' => array(
              'categories' => array(CActiveRecord::HAS_MANY, 'Category', "user_id"),
              'account' => array(CActiveRecord::HAS_ONE, 'Account', "user_id"),
            ),
            ...
        ),
  ),