源于生活

标题: ThinkPHP 项目分组目录结构说明 [打印本页]

作者: kevin-ying    时间: 2016-3-15 10:25
标题: ThinkPHP 项目分组目录结构说明
项目分组目录结构
启用了项目分组后,目录结构有些细微变化,主要体现在 Lib/Action、Tpl模板、Runtime/Cache缓存、用户函数等目录结构上。
Lib/Action 目录
假设项目分组名称列表配置如下:
'APP_GROUP_LIST'=>'Home,Admin,User,Blog'
那么需要依次在 Lib/Action 目录下创建对应的项目分组目录,如下图所示:
[attach]1394[/attach]
而对各项目继承的公共基类文件,如 BaseAction.class.php 等,需要放在 Lib/Action 目录下,放于各自目录下将无效,哪怕这个继承的类文件只是由该项目单独继承。
空模块与空操作类文件也需要放置于 Lib/Action 目录下。
Tpl 模板目录
Tpl 模板目录下可以有多个模板主题,以默认主题 default 来说,同样需要创建对应的项目模板目录:
[attach]1395[/attach]
Tpl/default/Public 仍作为(default模板主题)全站公共模板目录,但对该目录内模板文件的包含有点语法上的改变:
这样包含的就是 Tpl/default/Public/header.html 模板文件。
另外,对于系统内置的:
$this->success();$this->error();
这两个操作对应的模板也应该放置于 Tpl/default/Public 公共目录下。
而在各个项目分组模板目录下,仍然会生成 Public 目录,项目单独的公共模板仍可以放于其内以供本项目共享,包含方式仍为:
以 Admin 为例说明,包含的就是 Tpl/default/Public/Admin/Public/header.html 模板文件。
Runtime/Cache 缓存目录
同模板目录一样,Runtime/Cache 缓存目录也会根据项目分组而自动生成对应的项目分组缓存目录。
用户函数
对于用户的独立函数文件,Common/common.php 仍是被各项目分组公用的。如果要单独为某个项目分组提供独有的函数文件,需要在 Common 创建对应的目录。以 Admin 分组项目为例,Common/Admin/function.php 则为 Admin 分组项目独有的函数文件。
配置文件目录
各分组项目贡献配置目录下的 config.php 文件里的配置信息,要为各分组配置单独的个性化配置文件,需要在配置目录下创建对应的目录及配置文件,如:
Conf/Admin/config.php
更多关于项目分组配置参见《ThinkPHP 项目分组配置》。
模型类目录
对于模型类,也可以进行分组管理,如:
$user = D('Admin.UserView');
对应的就是 Lib/Model/Admin/UserViewmodel.class.php 文件。
实际上 Model 下的目录跟项目分组没有必然的对应关系,使用 D('Test.UserView') 的时候,系统会自动对应 Lib/Model/Test/UserViewmodel.class.php 文件,而不关心 Test 是否是一个项目分组。
语言定义目录
系统语言目录也可以根据项目分组来管理。如 Admin 分组,其对应的语言文件则为:
Lang/Admin/lang.php模板特殊字符替换
对于模板中的与项目有关的特殊替换字符(如 /Tpl/Home/default/Public)仍保持不变,即:
/Tpl/Home/default/Public 替换后的值仍为 /APP_NAME/Tpl/default/Public/,而与项目分组无关,其余的特殊替换字串亦如此。
关于模板特殊字符串替换参见:《ThinkPHP 模板特殊字符串替换


作者: kevin-ying    时间: 2016-3-15 10:26
最近开始学习thinkphp,在下不才,很多的问题看不明白所以想拿出来,恕我大胆发在首页上,希望看到的人能为我答疑解惑,这样大家有个互动,学起来快点,别无他意,所谓活到老,学到老,希望各位不要见笑啊。
我的做法很简单,先从手册开始,手册是开发thinkphp作者辛勤劳动的成果,但是有些地方是在是不懂,如果有幸各位也遇到类似的问题希望能回复。thinkphp手册地址:http://doc.thinkphp.cn/manual.html

1.框架目录
在章节1.6 目录结构,内容如下:
新版的目录结构在原来的基础上进行了调整,更加清晰。
目录/文件说明
ThinkPHP.php框架入口文件
Common框架公共文件目录
Conf框架配置文件目录
Lang框架系统语言目录
Lib系统核心基类库目录
Tpl系统模板目录
Extend框架扩展目录(关于扩展目录的详细信息请参考后面的扩展章节)
注意:如果你下载的是核心版本,有可能Extend目录是空的,因为ThinkPHP本身不依赖任何扩展。
如果我们打开主目录下的ThinkPHP目录,主要内容如上所说,截图如下图1:
[attach]1396[/attach]
图1
可以发现系统核心基类库已经不叫Lib了,这里是Library,开提到Extend这目录,说是框架扩展目录,并且还特别提示在核心版本中这个目录中是空的,可是我在ThinkPHP3.2.2核心版和ThinkPHP3.2.2完整版这两个版本中都没有找到这个Extend目录。截图如下:
[attach]1397[/attach]
图2.完整版目录
[attach]1398[/attach]
图3.核心版目录
如果我们打开的是整个目录看到的是下面的内容,如果4
[attach]1399[/attach]
图4.完整目录
这里我们可以看到其他的文件目录,还好作者在除了框架目录ThinkPHP之外的其他目录中都放了一个README.md文件来告诉我们这个目录是做什么的,
1.Application:项目目录
2.Public:资源文件目录,应该放css,js和图片
3.ThinkPHP:框架目录,这个是核心类容放在这里
4..htaccess:一个分布式配置文件,刚接触这个文件觉得很复杂,这里不具体讲这个文件的功能
5.index.phh:入口文件
6.README.md:这个自述文件

2.命名规则
1.类名以.class.php结尾,并且使用驼峰命名,这点个人很稀罕,可能因为作者是写了一段时间的java再来写这个框架,把java中的一些东西拿到这里了,所以我很稀罕,因为我写了很长时间的.net,呵呵,很讨厌以下划线分割单词来命名的方式,感觉让人来读一个以下划线分割的数组,麻不麻烦,直接读几个单词要比读一个数组简单啊,但是这个下划线命名的方式是php发明者的习惯,我们只好无奈地接受。
2.大小写,我记得php中自定义变量是区分大小写的,其他都不区分,但是为了避免我们在大小写单词之间切换,建议还是区分,我觉得能用小写尽量用小写,上学时做英文阅读理解有没有很烦出现大写的单词,有木有?
3.类名和文件名保持一致,这个也双手举赞,这样看到文件名就知道类名称了,还有.net是这样规定的。
4.函数的命名使用小写字母加下划线的方式如:get_client_ip,这点为什么没有使用驼峰或者pascal命名方式呢,这样不是更加符合阅读习惯么。
5.常量,语言参数,配置参数都是大写字母加下划线,一样的不习惯,读起来费脑子。



作者: kevin-ying    时间: 2016-3-15 10:28
3.2 完全开发手册 http://document.thinkphp.cn/manual_3_2.html
下载3.2框架后,解压缩到web目录下面,可以看到初始的目录结构如下:
3.2版本相比之前的版本自带了一个完整的应用目录结构和默认的应用入口文件,开发人员可以在这个基础之上灵活调整。其中,ApplicationPublic目录下面都是空的。
README.md文件仅用于说明,实际部署的时候可以删除。
上面的目录结构和名称是可以改变的,这取决于你的入口文件和配置参数。
Application目录默认是空的,但是第一次访问入口文件会自动生成,参考后面的入口文件部分。
其中框架目录ThinkPHP的结构如下:






欢迎光临 源于生活 (http://bbs.vingoo.info/) Powered by Discuz! X3.1