php版本兼容的坑,php8兼容性

本文目录一览:

如何避免ThinkPHP的两个坑

public function createProblems(){

$problems = I(‘json.’);

if (empty($problems)) {

$this-error($problems, ‘json格式不符合规范’);

}

foreach ($problems as $problem) {

$data = D(‘Problem’)-create($problem, self::OP_INSERT);

if (!$data) {

$this-error($problem, D(‘Problem’)-getError());

}

$temp[] = $data;

}

$ret = D(‘Problem’, ‘Service’)-addProblems($temp);

if ($ret === false) {

$this-error(null, ‘导入失败’);

}

$this-success(null);

}

接口完成的功能是批量创建问题,参数为json数组,addProblem()方法中就是一个addAll操作。

第一个坑-自动填充

使用自动填充可能会覆盖表单提交项目。其目的是为了防止表单非法提交字段。使用Model类的create方法创建数据对象的时候会自动进行表单数据处理。

官方文档明确说了自动填充会覆盖表单,所以即使你post过来的参数中给出了具体数值,使用create方法之后也可能会被覆盖。千万注意!!!

第二个坑-addAll方法

addAll方法中不能出现null值,否则其他数据会自动向前移动,导致添加失败。举例:

[

{

“appId”: 1,

“serviceId”: 2,

“createUser”:null,

“status”: 1,

“priority”: 2

}

]

其中,createUser字段为null,插入时的sql语句会变成insert into va_problem (appId, serviceId, createUser, status, priority)values (1, 2, 1, 2)。null值没了,导致插入失败,这应该是ThinkPHP3.2.3的一个bug。这篇博客有相关的讨论。

引入坑的过程

problemModel里面有对createUser做自动填充。

通过api创建问题时,首先自动填充会覆盖,所以表单中的createUser值失效,这是第一个坑。然后,由于自动填充createUser调用的是get_username()函数,通过api调用时,session(username)取不到值,所以create之后字段变成”createUser”:null,引入了第二个坑。

THINKPHP项目的一些坑

当我们设置input type=”text/ display:block时,其宽度并不等于父元素的100%,而是需要我们手动设置width=100%;

{:C(“IP_URL”)}会调用Common下Conf里config.php的自定义变量

结论:IS_POST好用,IS_GET不好用,可以用count($_GET)来替代

PHP中不区分NUL null

两个表连接 -join(“B on A.xx=B.xx”) √

三个表连接 -join(“inner join B on A.xx=B.xx join C on A.xx=C.xx”) √

-join(“inner join B on A.xx=B.xx inner join C on A.xx=C.xx”) √

mysql-php-视图层

mysql中整形字段—》php接收为 字符串—》模板中又为number

ecshop 与php5.4兼容性上会出现什么问题

是会有问题的,php5.4里面会抛弃掉一些5.3的函数,所以ecshop的2.7.3版本在php5.4下面用的话会有一些不兼容,不过现在ecshop出3.0版本了,直接兼容到php5.6,模板堂官方对外免费使用的模板也都兼容5.6了,您可以去下载安装用下

原创文章,作者:小蓝,如若转载,请注明出处:https://www.506064.com/n/219914.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
小蓝小蓝
上一篇 2024-12-09 11:02
下一篇 2024-12-09 11:02

相关推荐

  • PHP和Python哪个好找工作?

    PHP和Python都是非常流行的编程语言,它们被广泛应用于不同领域的开发中。但是,在考虑择业方向的时候,很多人都会有一个问题:PHP和Python哪个好找工作?这篇文章将从多个方…

    编程 2025-04-29
  • Git secbit:一种新型的安全Git版本

    Git secbit是一种新型的安全Git版本,它在保持Git原有功能的同时,针对Git存在的安全漏洞做出了很大的改进。下面我们将从多个方面对Git secbit做详细地阐述。 一…

    编程 2025-04-29
  • PHP怎么接币

    想要在自己的网站或应用中接受比特币等加密货币的支付,就需要对该加密货币拥有一定的了解,并使用对应的API进行开发。本文将从多个方面详细阐述如何使用PHP接受加密货币的支付。 一、环…

    编程 2025-04-29
  • 如何将Java项目分成Modules并使用Git进行版本控制

    本文将向您展示如何将Java项目分成模块,并使用Git对它们进行版本控制。分割Java项目可以使其更容易维护和拓展。Git版本控制还可以让您跟踪项目的发展并协作开发。 一、为什么要…

    编程 2025-04-28
  • Python的版本演变

    Python是一门非常流行的编程语言,它有着简洁、易读、易写的特点。自1991年由Guido van Rossum发明以来,Python已经发展成为一个成熟的编程语言,拥有多个版本…

    编程 2025-04-28
  • 使用PHP foreach遍历有相同属性的值

    本篇文章将介绍如何使用PHP foreach遍历具有相同属性的值,并给出相应的代码示例。 一、基础概念 在讲解如何使用PHP foreach遍历有相同属性的值之前,我们需要先了解几…

    编程 2025-04-28
  • librosa版本用法介绍

    librosa是一个用于音频信号处理的python库,具有多种处理音频的功能。在librosa库中,版本号非常重要,在不同的版本中可能会存在一些差异。本文将围绕librosa的版本…

    编程 2025-04-28
  • PHP获取301跳转后的地址

    本文将为大家介绍如何使用PHP获取301跳转后的地址。301重定向是什么呢?当我们访问一个网页A,但是它已经被迁移到了另一个地址B,此时若服务器端做了301重定向,那么你的浏览器在…

    编程 2025-04-27
  • Java多版本支持实现方式

    本文将从以下几个方面阐述如何实现Java多版本支持,并给出可行的代码示例。 一、多版本Java环境概述 Java是一门跨平台的编程语言,但是在不同的应用场景下,可能需要使用不同版本…

    编程 2025-04-27
  • Taro3.5.11版本微信小程序端v-html依然无法解析video为中心的问题解决方案

    该问题的解决是通过使用 Taro3.5.11 版本自定义组件进行处理,具体解决方案如下: 一、自定义组件 首先,我们需要创建一个自定义组件 VideoComponent,该组件的主…

    编程 2025-04-27

发表回复

登录后才能评论