Skiy 发表于 2018-6-14 18:20:47

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

CI 多个入口项目共享公共数据

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

设置 $application_folder = 'wechat';


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

/**
* 公共资源文件夹
*/
define('ASSETS', FCPATH.'assets'.DIRECTORY_SEPARATOR);


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

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


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

├── cache
├── config (必须)
├── controllers
├── core
├── logs
└── views


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

├── config.php
├── constants.php
├── mimes.php
└── routes.php


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

hooks


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

defined('BASEPATH') OR exit('No direct script access allowed');
class MY_Config extends CI_Config {
public $_config_paths = array(APPPATH, ASSETS);
}


5.core 目录内新增 MY_Loader.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论坛)

Hex 发表于 2018-6-14 22:23:18

感谢楼主的分享~对于发帖子的问题,深表歉意,已经调整了论坛策略,希望有效果~
页: [1]
查看完整版本: CI 多个入口项目共享公共数据(model,libiries等)