搭建项目框架的第一步是先明确目录结构及其作用. 确定好目录后即可布局功能模块, 插件, 基础代码层等等. 这里列出我曾做过的项目目录结构。
├── app
│ ├── config
│ ├── controllers
│ ├── errors
│ ├── helpers
│ ├── hooks
│ ├── language
│ ├── models
│ └── views
├── lib
│ ├── codeigniter
│ ├── component
│ ├── module
├── private
│ ├── excel_tmpl
│ └── product_img
├── public
│ ├── css
│ ├── image
│ ├── js
│ ├── plugin
│ └── swf
├── resource
└── tmp
├── cache
├── log
└── session
第一层目录有: app, lib, private, public, resource, tmp
app 存放项目功能实现代码, 三层架构中的控制器, 视图, 模型层, 配置等等.
lib 存放基础类库、第三方类库、组件、框架底层架构.
private 存放外部不可访问的文件, 如: 用户上传的文件, 公司尚未对外发布的新产品图片等等,
建这个目录的好处多多啊, 1. 外部用户不可能访问到, 2. 可以将这个目录设置为禁止执行PHP代码.
即使用户上传了恶意代码文件也执行不了,大大提高安全性。
笔者曾经遇到过被恶意上传了一个包含 system(), eval()等代码的图片文件,
并通过URL参数执行图片中包含的PHP代码而导致整个数据库被拖。
public 存放外部可访问文件, 如:css, 图片, js, 入口文件。
它是项目的根目录, 这里有 index.php 入口文件, 所有控制器的访问都通过这个入口文件调用。
这种模式叫单一入口模式。
单一入口模式的好处是可以在入口文件中做统一的安全检查、权限控制、基础类库加载、 初始化框架,
总之所有的初始化都在这里完成。
resource 存放一些说明文件, 需求文档等共享项目文档。
tmp 所有临时文件都放到这里, 如: 静态缓存文件、临时日志、会话等等。
第二层目录只讲几个主要的,其它目录相信大家看名字就知道是干麻用的。
app/config/ --------> 存放项目配置文件
├── autoload.php 需要自动加载的类或者文件路径
├── config.php 项目配置
├── constants.php 定义项目用到的常量
├── database.php 数据库配置文件
├── hooks.php 钩子函数
├── smarty.php smarty 配置文件
lib/
├── codeigniter 第三方框架存放目录
├── component 组件存放目录
├── module 独立功能模块存放目录
│ ├── alipay
│ └── smarty
├── phpexcel
下一期将讲解框架设计及类的分层, 敬请期待