【问题标题】:how to share Models folder between two (yii2 basic) applications如何在两个(yii2 基本)应用程序之间共享 Models 文件夹
【发布时间】:2025-12-19 16:50:11
【问题描述】:

我有两个使用相同数据库的yii2 basic 应用程序。 我目前的结构是:

/www
  /Project A
      /components
      /config
      /controller
      /models
      /...

  /Project B
      /components
      /config
      /controller
      /models
      /...

但我想创建这个结构

/www
  /Project A
      /components
      /config
      /controller
      /...

  /Project B
      /components
      /config
      /controller
      /...

  /shared
      /models

我该怎么做?

【问题讨论】:

  • 虽然它们共享相同的数据库,但它们共享相同的域,还是托管在 2 个不同的域中?我建议遵循advance-app 结构并将apps 导入同一根目录下
  • 使用 yii-app-advanced 并共享模型。默认情况下有 2 个应用程序(前端和后端),但您可以添加任意数量的应用程序
  • 您可以创建一个module 并将其作为两个项目的外部依赖项进行管理

标签: php model yii2


【解决方案1】:

1) 将模型放入/path/to/www/shared/models 并放入shared/models 命名空间

2) 在配置中设置 @shared 别名,让两个应用程序都指向 /path/to/www/shared,如下所示

return [
    // ...
    'aliases' => [
        '@shared' => '/path/to/www/shared',

    ],
];

那么您应该能够像直接在您的应用中一样使用模型。

您可以阅读有关自动加载 here 的更多信息以及有关定义别名 here 的更多信息

【讨论】: