用户
 找回密码
 入住 CI 中国社区
搜索
查看: 1452|回复: 1
收起左侧

[中级] CI 多个入口项目共享公共数据(model,libiries等)

[复制链接]
发表于 2018-6-14 18:20:47 | 显示全部楼层 |阅读模式
CI 多个入口项目共享公共数据

1.新建入口文件 wechat.php:

  1. 设置 $application_folder = 'wechat';
复制代码


在 define('VIEWPATH', $view_folder.DIRECTORY_SEPARATOR);
下添加

  1. /**
  2. * 公共资源文件夹
  3. */
  4. define('ASSETS', FCPATH.'assets'.DIRECTORY_SEPARATOR);
复制代码


2.将原来的 application 目录下的子目录转移至新建的 assets 公共目录

  1. ├── config (非必须,共用文件,对应的项目可新建同名目录覆盖此文件夹内的文件。建议保留除步骤3的config里面已有文件以外的文件)
  2. ├── helpers
  3. ├── hooks
  4. ├── language
  5. ├── libraries
  6. ├── models
  7. └── third_party
复制代码


3.原 application 或 其它新入口的项目(xxx)下的子目录有

  1. ├── cache
  2. ├── config (必须)
  3. ├── controllers
  4. ├── core
  5. ├── logs
  6. └── views
复制代码


其中 config 目录下的文件必须包括以下四个文件

  1. ├── config.php
  2. ├── constants.php
  3. ├── mimes.php
  4. └── routes.php
复制代码


若有需求,则可新建对应的目录,将覆盖 assets 对应目录,如

  1. hooks
复制代码


4.在 core 目录下新建 MY_Config.php 配置文件,内容如下

  1. defined('BASEPATH') OR exit('No direct script access allowed');
  2. class MY_Config extends CI_Config {
  3. public $_config_paths = array(APPPATH, ASSETS);
  4. }
复制代码


5.core 目录内新增 MY_Loader.php 文件,继承内容如下
PHP复制代码
 
class MY_Loader extends CI_Loader {
 
    public function __construct() {
        parent::__construct();
               
                $this->_ci_ob_level  = ob_get_level();
                $this->_ci_library_paths = array(APPPATH, ASSETS, BASEPATH);
                $this->_ci_helper_paths = array(APPPATH, ASSETS, BASEPATH);
                $this->_ci_model_paths = array(APPPATH, ASSETS);
                $this->_ci_view_paths = array(APPPATH.'views/'        => TRUE, ASSETS.'views/'=>TRUE);
 
    }
}
 
复制代码

搞定

博文发于:https://www.skiy.net/201612154135.html

基本骨架在我已经弄到 Gitee 了... 有需要的话,可以参考下: https://gitee.com/skiy/ci-base

测试网址: http://ci1.host.apijs.cc (入口是website) 和 http://ci2.host.apijs.cc (入口是admin)

++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
发到 Gitee 上的我说一下:
为了安全,我已将入口文件丢到了 public 文件夹. 所以静态文件什么的也必须要丢进来这里.(入口文件直接参考public下的文件,照着上面改就好了,无非是在文件夹前面多加了 .. 两点)
nginx 目录下有基本的 nginx 配置文件, 分别对应 admin.php 和 index.php 入口文件, 指定域名 a 只能访问 index.php,不能访问admin.php 了. 域名b蛮是反之.
application(分别的应用目录) 下我加了一个 logic 层. 本来还有个 service 层的,我删掉了.跟 logic 层一样加进去就行了,很容易.
在 core 下的 MY_Config.php 重写了 base_url...因为,如果指定了域名,那么线下开发环境和运营环境每次都改,很不方便...

可以共用 assets 下的 model,libraries,logic等等...配置信息大部分能共用(比如说你创建个 socket.php 在 assets/config/ 下,那么在 admin 和 website 下也可以直接使用...)

...

有问题可以直接回帖或到我博客留言.(建议直接回帖,因为我经常逛CI论坛)

评分

参与人数 1威望 +5 收起 理由
Hex + 5 很给力!

查看全部评分

发表于 2018-6-14 22:23:18 | 显示全部楼层
感谢楼主的分享~对于发帖子的问题,深表歉意,已经调整了论坛策略,希望有效果~

本版积分规则