在代码点火器应用程序中分解共享模型

时间:2009-11-02 04:51:46

标签: php codeigniter shared-libraries

我对代码点火器和php(来自java背景)相当新。

我想创建一个由三个应用程序共享的模型,这些应用程序可能在同一台计算机上运行,​​也可能不运行。 因此,我希望将模型类保持为可移植,以便由三者共享,并由SCM系统轻松处理。

所以我的想法是做以下事情: 如果我已将应用程序分解为单独的目录以共享CI: 在/ var / WWW / APP1 在/ var / WWW / APP1 /模型 的/ var / WWW / APP1 /控制器 ... 在/ var / WWW / APP 2 在/ var / WWW / APP3 /无功/网络/系统

然后创建一个共享文件夹以将模型放入:

的/ var / WWW /共享/模型

现在我可以破解CI来寻找那里的模型,或者我可以使用符号链接,即 / var / www / app1 / models - > ../shared/models / var / www / app2 / models - > ../shared/models / var / www / app3 / models - > ../共享/模型

我对PHP的内部工作很陌生,所以我认为这至少会造成性能损失,因为模型文件最多可能加载3次(可能是4次),或者更糟糕的是这只是barf,因为有4个文件副本名称相同。

这是个坏主意吗?有更好的方法吗?

1 个答案:

答案 0 :(得分:0)

您是否考虑过使用Kohana? Kohana最初是CI的分支,但它已经成为一个优秀的框架。您在任何其他Web框架中找不到的cascading filesystem功能对于让多个应用程序共享模型/视图/控制器/库/帮助程序等非常有用。

以下是我在Kohana 2.x中的表现:

  • 将系统和模块文件夹上传到http root以外的位置,例如/apps/kohana/system/apps/kohana/modules

  • 将应用程序文件夹放在附近,例如/apps/kohana/applications/app1

  • 设置/public_html/index.php以指向3个文件夹。

$kohana_application = '../apps/kohana/applications/app1';
$kohana_modules = '../apps/kohana/modules';
$kohana_system = '../apps/kohana/system';
  • 现在只需将您希望在应用中共享的模型投放到/apps/kohana/system/models/即可。或者,如果您只想限制某些应用,请创建一个模块,例如/apps/kohana/modules/mymodule1并配置这些应用以使用该模块。