企业🤖AI智能体构建引擎,智能编排和调试,一键部署,支持私有化部署方案 广告
## 程序目录结构 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目录需要用户自己创建。