home-code

示例❤源码



### 任意目录运行

* 任意子目录运行
  - 贴心猫 可以放在web任意子目录下运行

* 配置文件:/root/cfgs/boot/\_paths.php
  - [查看代码]({=PATH_PROJ}/demo.php?home-code&fp={proj}/root/cfgs/boot/_paths.php-cdemo);
  - 注意:敏感文件不能查看代码,这里查看的代码为度应的样例文件;

* 配置常量:define('PATH_PROJ', '/peace/myprojects');
  - 这样配置任意子目录,注意前面以/开头,后面不要/;
  - 如果配置在根目录,则设置是空字符串,而不是`/`。
    

### 多项目思考

* 维护思路:
  - 假入我们有多个网站项目(且版本相同),先看看 默认的 [文件结构]({surl(hello-files)});
  - 几个网站 的 `imcat` / `ximps` 目录下内容都是一样的,那维护起来,也是N倍的工作量!
  - `imcat` / `ximps` 目录能否几个站共用呢?!
  - 能共用!这一节就说说,多个项目怎么公用一些目录;或DIY目录结构。

* 配置:
  - 上述文件:`\_paths.php`文件;
  - 专门用于配置项目根目录下的几乎所有目录;
  - 先看看原始的配置:

```
  // 项目(project): 访问相对根路径:注意:在根目录设置是空字符串,而不是/,非根目录前面以/开头,后面不要/
  define('PATH_PROJ', '/peace/myprojects'); 
  define('PATH_BASE',  PATH_PROJ.'/index.php'); // /index.php, /, /base.php, 

  //dirs&path : DIR_*实体路径; PATH_*访问路径
  define('DIR_ROOT',   DIR_PROJ.'/root');   define('PATH_ROOT',   PATH_PROJ.'/root');  
  define('DIR_IMCAT',  DIR_PROJ.'/imcat');  define('PATH_IMCAT',  PATH_PROJ.'/imcat'); 
  define('DIR_VIEWS',  DIR_PROJ.'/views');  define('PATH_VIEWS',  PATH_PROJ.'/views'); 

  define('DIR_VARS',   DIR_PROJ.DS.'xvars'); define('PATH_VARS',   PATH_PROJ.'/xvars');
  define('DIR_CTPL',   DIR_VARS.'/ctpl');   define('PATH_CTPL',   PATH_VARS.'/ctpl');  
  define('DIR_DTMP',   DIR_VARS.'/dtmp');   define('PATH_DTMP',   PATH_VARS.'/dtmp');  
  define('DIR_HTML',   DIR_PROJ.'/html');   define('PATH_HTML',   PATH_PROJ.'/html');  
  define('DIR_URES',   DIR_PROJ.'/ures');   define('PATH_URES',   PATH_PROJ.'/ures');  

  define('DIR_IMPS',   DIR_PROJ.DS.'ximps'); define('PATH_IMPS',   PATH_PROJ.'/ximps');
  define('DIR_VENDOR', DIR_IMPS.'/vendor'); define('PATH_VENDOR', PATH_IMPS.'/vendor');
  define('DIR_VENDUI', DIR_IMPS.'/vendui'); define('PATH_VENDUI', PATH_IMPS.'/vendui');
  define('DIR_STATIC', DIR_IMPS.'/static'); define('PATH_STATIC', PATH_IMPS.'/static');

```

* 部署思路
  - 所以,如果是多个项目公用 `imcat` / `ximps` 目录;  
    只需配置: DIR_IMCAT, PATH_IMCAT, DIR_IMPS, PATH_IMPS 常量即可。
  - 如果多个项目,都放在站点根目录下:  
    则公用 `imcat` / `ximps` 目录单独拿出来(也可放在某一站点):  
    DIR_IMCAT, DIR_IMPS 设置指向对应实体目录;  
    PATH_IMPS 可设置虚拟目录,PATH_IMCAT 不用另外设置(没有用上);   
  - 如果多个项目,都放在同一站点不同子目录下:  
    则吧公用 `imcat` / `ximps` 目录 也放在单独的子目录下,然后设置如上参数指向这个子目录; 


### 极致瘦身

* 多项目公用 `imcat` / `ximps` 目录结构

```
  /root-projects
    /blog/ 博客
    /blog_xvars/ 博客缓存(可放进/blog目录下,也可这样放出来)
    /house/ 房产
    /corp1_com/ 企业站1
    /corp2_com/ 企业站2
    /share_imcat/ 共用核心类库
    /share_ximps/ 共用第三方类库
```

* 配置修改
  - \_paths.php 配置类似修改如下:

```
  define('DIR_IMCAT', dirname(DIR_PROJ).DS.'share_imcat'); 
  define('PATH_IMCAT', dirname(PATH_PROJ).'/share_imcat'); 

  define('DIR_VARS', dirname(DIR_PROJ).DS.'share_ximps'); 
  define('PATH_VARS', dirname(PATH_PROJ).'/share_ximps');

  // PATH_IMCAT : 其实是用不到
  // PATH_* 还可以专门配置一个子域名如:define('PATH_VARS', 'http://img0.*.com/cache/share_ximps'); 
```


### 实际应用

* 贴心猫本地开发
  - 本地开发,即是共用 `imcat` / `ximps` 目录;

* 线上演示站
  - 博客,房产,企业网:部署在同一服务器;
  - v5.0,将设置共用 `imcat` / `ximps` 目录;

-End-