项目目录说明

v2.7开始在入口文件中可灵活配置各个目录组成,以下为推荐的目录结构

事实上在cmlphp里整个项目目录结构是可以完全自定义的、这边只讨论官方推荐的目录结构

下载框架项目推荐目录骨架,执行composer udpate(建议),可看到如下结构:

 项目目录说明  - 图1

projxxxxxxxxx 目录是项目所在根目录。

proj后加上一串加密串目的是为了防止当其路径存放在站点目录下时恶意用户通过工具猜测到项目目录,获取到模板文件及log文件,很多采用开源php框架的站点就常常被发现这个问题,当然最好是将projxxxxx目录部署到站点根目录的上一级,即站点根目录配置到projxxx/public目录.

开始开发前前先修改这个目录名、修改完将index.php中CML_APP_PATH相应修改即可

下面展开对projxxxxxxxxx目录做详细说明:

proxxx/Application目录

Application目录为整个项目的应用存放目录,假定我们有一个项目,该项目下有webadminapi三个应用,则目录下就有 webadminapi三个应用目录,这边提供默认的web应用目录。

web

proxxx/Application/web 目录为当前项目下的其中一个应用。一个项目下可能有多个应用。每个应用目录都包含了上线所需的所有配置、控制器、模型、视图、静态文件等,迁移的时候直接把应用目录copy走就好了。下线的时候要只要整个应用目录移除。避免了传统的我们上线/下线一个应用得跑到config/controller/model/static/view下分别发布/删除文件
  • web/Config 为web应用配置存放目录,web应用中独立的配置存放在这个目录下.
  • web/Controller 为应用控制器存放的路径我们在其下面看到了DefaultController.php文件以下为文件的内容

    1. <?php namespace web\Controller;

use Cml\Controller;

use Cml\View;

class DefaultController extends Controller
{
public function index()
{
echo '欢迎使用cml框架,应用初始化成功';
}

}

关于命名空间及其它参考控制器章节
  • web/Lang可选 为web应用语言包存放目录具体请参考 语言包章节

  • web/Model 可选 为web应用模型文件存放目录 具体请参考模型章节

  • web/Resource 可选 为web应用静态文件存放目录,应用下所有的静态资源都存放在这个目录下如:js、css、sass等

  • web/Plugin 可选 为web应用插件存放目录 具体请参考 插件章节

  • web/Service 可选 为web应用服务存放目录

  • web/View 可选 这web应用存放模板文件目录


proxxx/Config目录

Config目录即为项目全局配置文件存放目录,框架会自动识别当前运行的环境是 开发/cli(计划任务下)/正式环境,读取相应目录下的配置文件。下面对Config目录下的文件做详细说明
自v2.7.2起。cli/development/product这三个环境的判断组件也是可拨插替换的。也就是说假如你觉得cli/devolopment/product不够用,想分成按照域名加载配置文件。如http://dev.com 从dev.com目录取配置。http://pro.compro.com取配置。自己实现一个服务即可。修改入口中下面的配置为自已实现的服务.
  1. //必须绑定。环境解析。自带的服务实现development/product/cli三种。可以根据需要实现更多的环境Cml::getContainer()->singleton('cml_environment', \Cml\Service\Environment::class);

cli

proxxx/Config/cli 为通过命令行运行的时候加载的配置文件存放目录

development

proxxx/Config/development 为开发环境加载的配置文件存放目录

product为正式环境加载的配置文件存放目录

proxxx/Config/product 为正式环境加载的配置文件存放目录

cli/development/product 这三个目录下都会默认生成一个normal.php的配置文件,该文件为主配置文件即框架会自动加载,具体请查看 配置文件章节

common.php

common.php 为公用配置文件,也就是无论是cli还是product或者是development的环境都会自动加载的配置文件

plugin.php

plugin.php 为插件配置目录,也是cli/product/development共用 关于插件请参看 插件章节

route.php

route.php 为路由配置,也是cli/product/development共用 关于路由的使用请参看 路由章节

proxxx/Store目录

Store目录为运行时目录,该目录下存放了系统运行时的一些临时文件,下面做详细说明

Cache

该目录该目录下存放了模板渲染后的缓存及系统缓存使用文件缓存时生成的缓存文件

Data

框架会对数据库的表字段结构缓存在此目录下,所以线上环节如果有修改了主键名,请清空该目录

Logs

系统在开发环境会把警告以下的错误直接显示在控制台,致命错误/异常直接显示在页面上方便开发人员排查。如果是线上环境会将警告及以上的信息记录在此目录下的emergency.log中(底层是调用\Cml\Log::emergency)。按日期分目录存放(如20160801的日志则存放在 Runtime/Logs/2016/08/01/emergency.log中),方便排查,同时使用 \Cml\Log::xxx`相关方法记录的日志会分类存放在该目录下。具体可参考日志

public目录 (可选)

该目录为站点对外目录,在服务器配置方便修改的情况下入口文件也在这个目录下,在框架推荐的分应用模式下,上线后通过系统命令会将projxxx下的所有应用下 Resource目录映射到 public下。详情查看 静态资源管理

原文: http://doc.cmlphp.com/projectdir_explain/readme.html