## 程序目录结构
SpeedPHP框架的目录结构比较简单,秉承了SpeedPHP快速学习的理念。
新版的sp框架,由于加入了mudules开发模式,所以在目录结构方面,趋于更精炼,更固定化。
> 3.1版及之前的sp框架,目录结构是可以通过配置进行修改。
> 但是新版的情况不一样了。
之所以我们要用固定的目录结构,理由如下:
- 加入mudules开发模式,使得多个应用可以集成到一个程序里面,也就是传统的模块开发。所以已经不需要因为多应用共享类库而需要改变目录结构。
- 新的目录结构更安全,但是如果能随意修改结构,那么安全很难保证。
- 为了配合框架本身更精简的理念,让加载文件变得更少,更快速。
- “约定优于配置”的敏捷理念,让团队成员可以更容易理解各文件所在位置和意义,更容易上手和交接现有程序。
新的结构加入了protected目录,意为“保护目录”。除了入口文件(index.php)外,其他代码文件(包括模板.html)都应该放在protected目录下,以便统一保护起来,拒绝外部浏览访问,杜绝安全问题。
> 在3.1版的框架程序的实践中,经常有初学者页面上直接用链接来访问模板目录(tpl/view目录)下的.html文件,这是有安全隐患的。因为在模板目录下的.html,虽然扩展名是html,但实际上已经算是可执行的php程序的一部分。通过浏览器访问时,这些html文件可以被看到到源码——也相当于php代码被公开了。
> 临时文件目录tmp有时也会有一定的安全隐患,这是一个能被上传文件的目录。如果服务器没有配置该目录禁止执行php程序的权限,或者上传的文件不经过严格的过滤,那么通过浏览器也可以执行这些危险的php程序。
新版的protected目录自带了apache服务器的.htaccess文件,可以保护当前目录的访问。如果您的服务器是nginx,可以在nginx配置内加入
location ^~ /protected {
deny all;
}
> .htaccess文件如果不生效,那么可能是apache配置问题。请自行搜索解决。
> nginx配置上面的目录,如果是子目录内,请根据实际情况修改。
#### 既定的目录结构
**控制器目录,protected/controller**
- 控制器目录下应该全部都是控制器文件,如MainController.php.
- 控制器目录下可以有下一级子目录,每个子目录代表一个modules模块。
**框架目录,protected/lib**
主要是框架主文件,speed.php文件。
> 对比3.1版框架,现在的sp框架已经精简到一个文件内,以便更容易载入并且占用更少资源。
> 一个文件的框架在APC等opcode编译缓存的环境下,有更良好的速度。
**临时文件目录,protected/tmp**
保存缓存文件、模板编译文件、程序上传临时文件等的临时文件目录。
**模板目录,protected/view**
模板页面的存放目录。
该目录也可以有子目录,子目录通过display方法以view目录作为根路径方式载入。
**模型类库目录,protected/model**
该目录可以存放数据模型类,也可以存放其他第三方类库。
**类库目录,protected/include**
同model目录,但载入优先级比model目录要低。可以存放不太常用的第三方类库。
> 默认情况下,include目录需要用户自己创建。
- 自述
- 一、入门教程
- 1. 开始使用SpeedPHP
- 2. Hello World
- 3. 理解MVC
- 4. 制作留言本
- 5. 数据操作及Ajax
- 二、框架概述
- 1. 特色
- 2. 版权及开源协议
- 3. 开发环境
- 4. 编码版本
- 5. SAE平台使用
- 三、开发指南
- 1. 开发流程
- 2. 架构及扩展
- 3. 程序目录结构
- 4. 命名建议
- 5. 安全建议
- 6. 用户自定义
- 7. 模块modules
- 四、访问交互
- 1. 表单提交及数据获取
- 2. session/cookie的使用
- 3. 伪静态及URL跳转
- 4. 使用frameset
- 5. 模板引擎特性和使用方法
- 五、数据操作
- 1. 建立数据模型类
- 2. 数据操作教程
- 3. 分页
- 4. SQL支持及关联实现
- 5. 多数据库、主从库配置