TP5: M 方法 替换为 Db::name、S 方法 替换为 session、I 方法 替换为 input、U 方法 替换为 url
字母函数下边整理了一个表,可供参考
IS_POST 替换为 request()->isPost()
所以不能使用I('request.X'),可用Request::instance()->param();或者request()->param获取提交参数
控制器不用强制加Controller
查询:
TP3.2:M("XXXX")->field($field) ->join("left join tab_user u on p.create_user=u.user_id") ->select();//表名重命名可用as
获取单个字段数值用getField,新增数据用add
TP5: 模型->field($field) ->join(" tab_user u“,” p.create_user=u.user_id",“LEFT”) ->select();//表名重命名不可用as,
主表用alias重命名,联表啥都不用,直接用表名+空格+重命名名称
获取单个字段数值用column,新增数据用create,insert代替add,更新用update代替save
TP3.2 有ajaxReturn,模板输出用:$this->display(""); 定义:例如:define('IN_ECS',“true”);
TP5 替换成return json($result),模板输出用:return $this->fetch(),对于直接访问模板,可使用return view() define('IN_ECS',true);去掉引号
有的人说TP5之后访问多模块总是出现问题,不管怎么访问都会出现访问到index.php/index/index这类默认入口
其实字TP5之后路由都可以自己设置,如果没设置好就会出现类似这种情况,可在pathinfo_fetch中后加一个request_uri
// 兼容PATH_INFO获取
'pathinfo_fetch' => ['ORIG_PATH_INFO', 'REDIRECT_PATH_INFO', 'REDIRECT_URL', 'REQUEST_URI']
如果这样还出错,那就直接用TP5默认的访问方式就行了【域名/模块/控制器/方法】这样的访问方式不香吗?
TP5中也取消了TP3.2中的部分常量,比如:IS_AJAX,在TP5中集中在request()这个函数中,我们判断是否是ajax提交,
可用:request()->isAjax();判断是否是post提交用:request()->isPost()
TP5已经有封装的文件管理类了,所以非跨服务器完全可以用自带的file类解决,但会以下错误:
原因:
/thinkphp/base.php中的define('DS', DIRECTORY_SEPARATOR);
把“DIRECTORY_SEPARATOR”直接写死为“/”.
我觉得应该是DIRECTORY_SEPARATOR在window下转换成“\”了,
DIRECTORY_SEPARATOR是php的内部常量,在windows上返回\,而在linux或者类unix上返回/
如果不想改核心代码,直接用字符串替换即可:
$getSaveName=str_replace("\\","/",$info->getSaveName());
$fileUrl = '/upload/'.$getSaveName;
首先对3.X的不严谨给开发者们带来的不正确的引导表示歉意,在5.0版本正式废除类似/id/1方式 可以通过get获取到id的方法,严格来讲这样的url是不属于$_GET的,现在可以通过param获取,具体使用可以通过请求部分查询。
新版的模型查询返回默认对象,系统默认增加了toArray方法,许多开发者在all或select尝试使用toArray来转换为数组,在此希望开发者能理解对象的概念,尝试使用对象进行数据的使用,或者使用db方法进行数据库的操作,也提醒一下部分滥用toArray的开发者,all或select结果是对象的数组集合,是无法使用toArray进行转换的。
5.0的URL访问不再支持普通URL模式,路由也不支持正则路由定义,而是全部改为规则路由配合变量规则(正则定义)的方式,具体这里不再赘述。
控制器的命名空间有所调整,并且可以无需继承任何的控制器类。
Controller
后缀,可以配置开启controller_suffix
参数启用控制器类后缀;return
方式返回数据,而非直接输出;如果你继承think\Controller的话,可以使用:
return $this->fetch('index/hello');
如果你的控制器没有继承 think\Controller的话,使用:
return view('index/hello');
5.0版本相对于之前版本对系统变化进行了大量的废弃,用户如果有相关需求可以自行定义
下面是废除常量
REQUEST_METHOD IS_GET IS_POST
IS_PUT IS_DELETE IS_AJAX
__EXT__ COMMON_MODULE MODULE_NAME
CONTROLLER_NAME
ACTION_NAME APP_NAMESPACE
APP_DEBUG MODULE_PATH等
—————————————————— 字母函数参照表 —————————————————————————————
3.2版本 | 5.0版本 |
---|---|
C | config |
E | exception |
G | debug |
L | lang |
T | 废除 |
I | input |
N | 废除 |
D | model |
M | db |
A | controller |
R | action |
B | 废除 |
U | url |
W | widget |
S | cache |
F | 废除 |
—————————————————————————后续待更———————————————————————
创作不易,如果能够解决您的问题,请给我点个赞,谢谢,或者想给予我更多的鼓励,可微信扫码打赏
作者:Mark
出处:https://mp.csdn.net/console/editor/html/105730455
个性签名:没有,就占个坑蹲着而已
阿里云:领取海量云产品优惠,服务器五折起步:https://www.aliyun.com/minisite/goods?userCode=tjndc6hg
腾讯云618活动:【腾讯云】618云聚惠,百款云产品限量抢购,1核2G云服务器首年95元https://cloud.tencent.com/act/cps/redirect?redirect=1059&cps_key=67b003b15a96762f5df12787441e6583&from=console