【问题标题】:CodeIgniter 3 Share core model between application packagesCodeIgniter 3 在应用程序包之间共享核心模型
【发布时间】:2017-12-30 15:50:35
【问题描述】:

我已经在谷歌上搜索了一段时间,但我似乎无法找到解决我的问题的方法。我有一个带有 2 个应用程序(后端和前端)的 Codeigniter 实例。

所以我已经像这样设置了我的应用程序文件夹:

  • webroot/应用程序
    • 前端
    • 后端

现在我在这两个应用程序之间有了相似之处,比如模型等。所以我创建了一个“通用”包,就像这样(我在互联网的某个地方找到了这种方法,不记得具体在哪里):

  • webroot/应用程序
    • 前端(标准代码点火器结构)
    • 后端(标准 codeigniter 结构)
    • 普通
      • 配置/
      • 帮手/
      • 语言/
      • 图书馆/
      • 型号/

它会正确自动加载,我可以在后端和前端之间共享模型等。但现在我想介绍一个 MY_Model,您必须将其放在应用程序文件夹内的 core 目录中(如文档所述)。当然,我想通过 3 个应用程序包共享模型。 (我希望前端和后端中的模型对其进行扩展,但也希望在 common 包中的模型)。

这是我卡住的地方。我尝试将core 文件夹放入common 应用程序包中,但后来我什至无法使用common 包中的模型对其进行扩展。

Class 'MY_Model' not found in /webroot/application/common/models/News_model.php on line 11

我似乎也无法在任何其他包中扩展它。

Class 'MY_Model' not found in /webroot/application/backend/models/Ad_model.php

我不想每次添加一些新功能时都复制 MY_model 类 3 次并编辑 3 个不同的文件。

有没有办法解决这个问题?我好像搞不懂。

谢谢!

【问题讨论】:

    标签: php codeigniter codeigniter-3


    【解决方案1】:

    您可以将核心目录移到外部并将其符号链接回每个结构。

    $ ln -s {common/core} {frontend/core}
    $ ln -s {common/core} {backend/core}
    

    【讨论】:

    • 符号链接不是选项。它的共享主机,我没有对服务器的任何 shell 访问。不过,很好的想法,谢谢 :)
    • 如果只是一个文件;你可以在每个地方放一个文件,然后把那个放在外面。
    • 你的意思是,手动做一个require_once?但是,如果我对文件进行更改,我不想继续记住我需要编辑另一个文件。我也想减少重复,甚至不介绍它。
    • 这就是我的意思。您在每个位置创建该文件;你 require_once 外面的文件。然后当你在外面编辑文件时;所有需要它的文件都将被更新。只需将带有 require 的文件放在需要的每个位置后,您就可以更新一个文件。您只需将 require_once 一次性放入,然后将该文件放在您需要的任何地方。
    • 我想这将是我唯一的解决方案。感觉就像我正在反对框架。感谢您的建议!
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2011-05-07
    • 1970-01-01
    • 1970-01-01
    • 2012-06-02
    • 1970-01-01
    • 1970-01-01
    • 2011-08-24
    相关资源
    最近更新 更多