【问题标题】:Break out shared model in code igniter applications在代码点火器应用程序中拆分共享模型
【发布时间】:2009-11-02 04:51:45
【问题描述】:

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

我想创建一个模型,该模型由三个应用程序共享,这些应用程序可能会或可能不会在同一台机器上运行。 所以我想保持模型类的可移植性,以供所有三个共享并由 SCM 系统轻松处理。

所以我的想法是做以下事情: 如果我已经将应用程序拆分为单独的目录以共享 CI: /var/www/app1 /var/www/app1/models /var/www/app1/controllers ... /var/www/app2 /var/www/app3 /var/www/system

然后创建一个共享文件夹来放置模型:

/var/www/shared/models

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

我是 PHP 内部工作的新手,所以我认为这至少会影响性能,因为模型文件可能会被加载多达 3 次(可能是 4 次),或者更糟糕的是这只会barf 因为有 4 个文件的副本名称相同。

这是个坏主意吗?有没有更好的方法来做到这一点?

【问题讨论】:

    标签: php codeigniter shared-libraries


    【解决方案1】:

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

    这是我在 Kohana 2.x 中的做法:

    • 将系统和模块文件夹上传到 http 根目录之外的位置,例如 /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)并将这些应用配置为使用该模块。

    【讨论】:

    • 感谢卢克曼的回答。 Kohana 的稳定性和可扩展性如何?作为 CI 的一个分支,它是否有足够的曝光率在许多不同的生产环境中进行测试?
    • 其实,没关系。我查看了网站和论坛 - 它看起来非常活跃,教程也很棒。感谢您的回答。
    • 如何回答 CodeIgniter 的问题?
    • StackOverflow 不仅仅是为了准确回答问题。它是关于解决编程问题的。如果 CodeIgniter 不能解决问题,我给了一个更好的选择。我自己是一个前 codeigniter 用户,因为我对 codeigniter 的缺点感到沮丧而迁移到 Kohana。
    猜你喜欢
    • 2012-03-03
    • 2015-03-23
    • 1970-01-01
    • 2014-02-23
    • 1970-01-01
    • 2023-04-11
    • 2011-12-18
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多