资讯专栏INFORMATION COLUMN

PHP 7 修改了什么呢 -- 2

leeon / 2874人阅读

摘要:风格的构造函数式构造函数,它与类的名称相同,因为它们是在所定义类的方法,现在已过时,并且将在未来被移除。如果的构造仅仅是一个类中定义构造函数,将发出。类实现构造函数方法不受影响。

PHP7 - use语句

从PHP7起,单次使用 use 语句可以用来从同一个命名空间导入类,函数和常量(而不用多次使用 use 语句)。
示例

// Before PHP 7
use comyiibaiClassA;
use comyiibaiClassB;
use comyiibaiClassC as C;

use function comyiibaifn_a;
use function comyiibaifn_b;
use function comyiibaifn_c;

use const comyiibaiConstA;
use const comyiibaiConstB;
use const comyiibaiConstC;

// PHP 7+ code
use comyiibai{ClassA, ClassB, ClassC as C};
use function comyiibai{fn_a, fn_b, fn_c};
use const comyiibai{ConstA, ConstB, ConstC};

?>

PHP7 - 错误处理

从PHP7,错误处理和报告已经改变。PHP5中使用了传统的错误报告机制的错误,现在大多数的错误将通过抛出异常错误处理。类似于异常,这些错误异常会冒泡,直到它们到达第一个匹配的catch块。如果没有匹配的块,那么会使用 set_exception_handler() 安装一个默认的异常处理并被调用,并在情况下,如果没有默认的异常处理程序,那么该异常将被转换为一个致命的错误,并会像传统错误那样处理。

由于 Error 层次结构不是从异常(Exception),代码扩展使用catch (Exception $e) { ... } 块来处理未捕获的异常,PHP5中将不会处理这样的错误。 catch (Error $e) { ... } 块或 set_exception_handler()处理程序需要处理的致命错误。
Exception Hiearchy
示例

class MathOperations
{
protected $n = 10;

// Try to get the Division by Zero error object and display as Exception
public function doOperation(): string
{

  try {
     $value = $this->n % 0;
     return $value;
  } catch (DivisionByZeroError $e) {
     return $e->getMessage();
  }

}
}

$mathOperationsObj = new MathOperations();
print($mathOperationsObj->doOperation());
?>

浏览器中将产生以下输出-

Modulo by zero

PHP7 - 整数除法

PHP7引入了intdiv()的新函数,它执行操作数的整数除法并返回结果为 int 类型。
示例

$value = intdiv(10,3);
var_dump($value);
print("
");
print($value);
?>

这将在浏览器产生以下输出 -

int(3)
3

PHP7 - Session选项

从PHP7+,session_start()函数接受数组参数覆盖在php.ini中设置的会话配置指令。这些选项支持 session.lazy,在默认情况下如果PHP会话数据改变,那么会覆盖任何会话数据信息。
添加另一种选择是:read_and_close,这表明会话数据应被读取,然后该会话应当立即被关闭不变。例如,session.cache_limiter 设置为私有,并设置标志使用下面的代码片段之后立即关闭会话。

session_start([
"cache_limiter" => "private",
"read_and_close" => true,
]);
?>

PHP7 - 弃用的功能

以下功能已被取消,可能会在PHP的未来版本中删除。
PHP4风格的构造函数

PHP4式构造函数,它与类的名称相同,因为它们是在所定义类的方法,现在已过时,并且将在未来被移除。如果PHP4的构造仅仅是一个类中定义构造函数,PHP7将发出E_DEPRECATED。类实现构造函数 __construct()方法不受影响。
示例

class A {
function A() {

  print("Style Constructor");

}
}
?>

这将在浏览器产生以下输出 -

Deprecated: Methods with the same name as their class will not be constructors in a future version of PHP; A has a deprecated constructor in...

静态调用非静态方法
非静态方法静态调用已被弃用,并且可能在将来被移除。
示例

class A {
function b() {

  print("Non-static call");

}
}
A::b();
?>

这将在浏览器产生以下输出 -

Deprecated: Non-static method A::b() should not be called statically in...
Non-static call

password_hash() salt 选项

password_hash()函数的salt选项已被弃用,使开发人员不会产生他们自己的(通常是不安全的)salt。函数本身生成一个加密的安全salt,在开发者没有提供salt值时 - 因此,定制 salt 生成不再需要了。
capture_session_meta SSL上下文选项
capture_session_meta SSL上下文选项已被弃用。 SSL元数据现在通过stream_get_meta_data()函数获取。
PHP7已删除的扩展
以下扩展名从PHP7起删除

ereg

mssql

mysql

sybase_ct

PHP7已删除的SAPI
以下SAPI从PHP7起删除

aolserver

apache

apache_hooks

apache2filter

caudium

continuity

isapi

milter

nsapi

文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。

转载请注明本文地址:https://www.ucloud.cn/yun/26237.html

相关文章

  • PHP 7 修改什么 --1

    摘要:此版本被认为是在年发布后最重要的变化。标量类型声明有两种选择强制强制性是默认模式,不需要指定。严格严格模式有明确的暗示。 PHP7是什么鬼? PHP7是PHP编程语言的一个主要版本,并号称是开发Web应用程序的一次革命,可开发和交付移动企业和云应用。此版本被认为是PHP在2004年发布PHP5后最重要的变化。 新功能 PHP7有加入几十个功能,最显著的是下面提到 - 改进的性能 - P...

    svtter 评论0 收藏0
  • PHP问题定位】修改数据库字段导致的fpm的coredump问题定位

    摘要:顺风车运营研发团队黄桃背景线上零星会出现进程及进程占用内存超过限制等报警告,并且两者报警的时间上往往都比较接近,如下原因分析时间上接近,那么出现两者报警的原因有可能是相同的,登录机器调试生成文件 顺风车运营研发团队 黄桃 背景 线上零星会出现fpm进程coredump 及 fpm进程占用内存超过限制等报警告,并且两者报警的时间上往往都比较接近,如下: showImg(https://...

    ASCH 评论0 收藏0
  • Python 实现图书超期提醒小帮手(修改版)

    摘要:前期工作准备得差不多了,开始找这个的提交部分的内容了,我们从登录页面应该也可以知道我们需要提交学号密码验证码这三个。差点忘了把发送邮件的截图发出来 一、实现目的 本来就很喜欢逛图书馆,时不时去借本书(注:借的都没看过),但我这个学期突然发现了问题,每本书都可以借两个月,但不幸的是我最近一学期借的书全部超期,一天一毛钱,我心疼这钱啊!!!灵机一动,为什么不写个脚本来通知自己图书超期呢?说...

    susheng 评论0 收藏0
  • 使用宝塔面板创建PHP网站,”no input file specified&a

    摘要:使用宝塔面板创建网站宝塔面板创建网站,怎么办今天,建站的时候却遇到了一个很奇怪的问题先是出现错误,后来出现错误。至此,这个问题完美解决。使用宝塔面板创建php网站,”no input file specified”怎么办?今天,建站的时候却遇到了一个很奇怪的问题:先是出现”no input file specified”错误,后来出现500错误...

    番茄西红柿 评论0 收藏2637

发表评论

0条评论

最新活动
阅读需要支付1元查看
<