摘要:--开发规范--一、目录与文件1. 目录必须使用小写字母,多个单词之间必须用下划线: user_hub2. 类文件名首字母必须大写,其它文件名必须使用小写字母3. 类名与类文件名必须保持一致,例如User类,所在类文件必须是User.php--------------------------------------------------------------------------------
--开发规范--
一、目录与文件
1. 目录必须使用小写字母,多个单词之间必须用下划线: user_hub
2. 类文件名首字母必须大写,其它文件名必须使用小写字母
3. 类名与类文件名必须保持一致,例如User类,所在类文件必须是User.php
--------------------------------------------------------------------------------
二、函数,类与属性和方法
1. 函数必须使用小写字母+下划线方式命名: get_user_info()
2. 类名必须采用驼峰命名法,首字母大写
3. 属性和方法也必须采用驼峰命名法,首字母必须小写:$userName, getInfo()
--------------------------------------------------------------------------------
三、常量与配置
1. 常量必须全部使用大写字母+下划线来命名: APP_NAME
2. 配置参数必须使用小写字母: url_route_on
3. 环境变量(.env)与常量声明规则相同,全部采用大写字母+下划线
--------------------------------------------------------------------------------
四、数据表与字段名: 必须使用小写字母+下划线: think_user, user_id
--目录结构--
一共有6个最重要的目录
1. application: 应用目录,用户大部分代码都写在这个里面
2. config: 框架配置目录,每个文件对应着一级配置
3. public: 对外可访问的Web目录
4. route: 路由目录,存放用户自定义的路由定义
5. runtime: 运行目录,存放临时生成的缓存或编译脚本文件
6. thinkphp: 框架核心目录(尽可能不要修改,以方便框架升级)
其它2个目录介绍:
1. extend: 扩展类库目录,用来存放不便归类模块和扩展框架功能
2. vendor: 由Composer加载并管理的第三类库目录
注意:
- 框架的MVC设计模式,全部在application目录中体现
- 我们的代码几乎全部写在了应用目录的对应模块中
- 对于我们来说,最关心的是controller,model,view目录,即MVC架构
--框架配置--
一、配置的种类有四种
根据配置的生效范围来区分有四类:
(惯例配置, 应用配置, 模块配置, 动态配置)
1.惯例配置:
(1)位置:think/convertion.php;
(2)生效范围:整个框架都有效,也是框架的默认配置
(3)强烈建议不要修改,否则会影响到升级;
(4)因为一旦你对框架核心进行了升级,你的惯例配置将会被重置.
2.应用配置:
(1)位置: config/...
(2)生效范围: 整个应用项目application
(3)配置采用二级配置,全部以php数组格式返回
(4)一级配置名称就是配置文件名(一定要注意,这与其它版本都不一样)
例如: app.php(应用配置),database.php(数据库配置),tmplate.php(模板配置)...
(5)默认的一级配置名称是: app
3.模块配置[可选]:
(1)位置: application/module/config/...
(2)生效范围: 仅对当前模块有效
(3)同名模块配置项会覆盖应用配置项
(4)并非所有的应用配置都可以在模块中重新声明
(5)最常用的是app.php,database.php
4.动态配置[可选]
(1)位置: 写在当前请求的控制器中
(2)生效范围: 仅限于当前URL请求
(3)不会保存到任何配置文件中
这四种配置的生效范围,是通过他们的声明位置来确定的。
也就说,这四种配置是有优先级别的:
惯例配置 < 应用配置 < 模块配置 < 动态配置
--------------------------------------------------------------------------------
二、配置参数的意义
对于项目开发来说,app.php中的配置项应该是第一步要进行设置的。
下面对常用的做一个解释:(详见手册或config/app.php中的注释)
注意:有二个配置项仅允许在环境变量中修改
app_namespace : 应用空间名称
config_ext: 配置文件后缀
--------------------------------------------------------------------------------
三、环境变量文件的创建方法
1.必须在根目录下面创建
2.文件名必须是: .env
3.必须采用ini格式: APP_DEBUG = true 即名值之间用等号,且结尾直接回车
注意:
1. 并非总是有效,推荐使用原生的$_ENV
2. 打开php.ini打开并设置:variables_order = "EGPCS"
3. 'E'表示将环境变量添加到当前系统变量中
4. 写到.env中的环境变量,必须要用Env::get()获取, 因系统不同,$_ENV中有可能获取不到
5. 环境变量不区分大写,但推荐变量名全部大写(与常量规则一致)
例如: 在tp51\.env
index/controller/Index.php
use think\facade\Env;
public function index()
{
$_ENV['MY_EMAIL'] = 'peter@php.cn'; //原生方式写入
dump($_ENV); //直接读取系统环境变量
dump(getenv()); //函数读取系统环境变量
return Env::get('MY_EMAIL'); //获取.env中的变量
}
--------------------------------------------------------------------------------
四、查看与设置环境变量
1. 先导入环境门脸类: use think\facade\Env;
2. 查看当前全部环境变量: Env::get(); //不要添加参数
3. .env中的app_debug和app_trace优先于app.php中的配置
4. 可直接查询某个变量: Env::get('app_trace');
5. 返回数据,数组用dump(),字符串可直接用return
6. 可以.env文件中直接进行设置或添加新变量
--------------------------------------------------------------------------------
五、获取配置项
有二种方式来获取配置: 系统Config类和助手函数config()
namespace app\index\controller;
use think\facade\Config; //必须先导入配置类:
class Index
{
public function index()
{
//1.使用Config类
dump(Config::get()); //获取全部配置项
dump(Config::pull('app')); //获取app.php,一级配置项
dump(Config::get('app.')); //获取app.php的另一方式,app后加一个点
dump(Config::has('app.default_lang')); //查询是否存在某个配置项
dump(Config::get('app.default_lang')); //获取某个指定配置项
//2.使用助手函数config()
dump(config()); //获取全部配置项
dump(config('app.')); //获取app.php中的配置项,一级配置
dump(config('?default_lang')); //查询是否存在某个配置项,默认为app.php
dump(config('default_lang')); //获取某个指定配置项
}
}
注意:助手函数虽然方便,但不能得到编辑器的提示
--------------------------------------------------------------------------------
六、动态设置
1.动态设置仅在当前请求中生效,写在控制器中
2.动态设置的参数,必须之前没有设置过
public function index()
{
Config::set('app.admin_mail','peter@php.cn'); //设置自定义配置项
dump(Config::pull('app')); //查看app配置中是否有自定义的配置项
//但是要注意,app.php文件中,并没有admin_mail配置项,因为动态配置不写入文件
return Config::get('app.admin_mail'); //app可以省略
}
--------------------------------------------------------------------------------
常用系统路径变量如下:
1. 应用根目录: root_path
2. 应用目录: app_path
3. 框架目录: think_path
4. 配置目录: config_path
5. 扩展目录: extend_path
6. composer目录: vendor_path
7. 运行缓存目录: runtime_path
8. 路由目录: route_path
9. 当前模块目录: module_path
-- URL与路由 --
一、TP51URL访问模式
1. 默认不再支持普通模式,但仍支持以普通传入参数
(1) 不支持: index.php?m=admin&c=index&a=del&id=10
(2) 但仍支持:index.php/admin/index/del?id=10 (参数以普通方式传入URL)
2. 支持兼容模式:index.php?s=admin/index/del/id/10
--------------------------------------------------------------------------------
二、隐藏入口文件
1. 可以隐藏入口文件,但仅适用于单入口设计
2. 如果为不同的模块绑定了不同的入口,则不允许隐藏入口文件
例如:为admin模块绑定了独立入口文件: admin.php,则不允许隐藏admin.php
3. 隐藏方法(以Apache为例)
在index.php文件所在目录,如public下面,创建.htaccess文件, 内容如下:
<IfModule mod_rewrite.c>
Options +FollowSymlinks -Multiviews RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-d RewriteCond %{REQUEST_FILENAME} !-f RewriteRule ^(.*)$ index.php/$1 [QSA,PT,L]
</IfModule>
-- 命名空间 --
为什么使用?
1. 符合PSR-4自动加载规范,系统不再提供类库文件导入方法
2. 采用命名空间实现类库自动加载,有效解决多模块和composer类库之间命名空间冲突
3. 如使用第三方类库或没有命名空间的类库,实例化时要在类库之前加上全局空间标识: \
-- 入口文件 --
1.入口文件名默认是:index.php,位于public目录下面;
2.入口文件应该是统一的,但不是唯一,不同的模块可以绑定不同的入口文件;
批改老师:韦小宝批改时间:2018-11-27 11:23:27
老师总结:不错!总结的非常的到位!给个赞!继续加油吧!