美文网首页
PHP7新增和修改内容涉猎

PHP7新增和修改内容涉猎

作者: LittleTrue | 来源:发表于2020-03-01 13:17 被阅读0次

新特性

传参类型拓展

指定形参类型是PHP 5就支持的一项特性, 形参支持 array - 数组、 object - 对象两种类型。现在可以使用下列类型参数: 字符串(string), 整数 (int), 浮点数 (float), 以及布尔值 (bool)。在旧版中,函数的参数声明只能是(Array arr)、(CLassNameobj)等,基本类型比如Int,String等是不能够被声明的。

返回值类型声明

PHP 7 增加了对返回类型声明的支持,返回类型声明指明了函数返回值的类型,可用的类型与参数声明中可用的类型相同。

null合并运算符

新增了null合并运算符 (??) 这个语法糖。如果变量存在且值不为NULL, 它就会返回自身的值,否则返回第二个操作数

组合比较符

PHP 7 新增加的太空船运算符(组合比较符 <=>)用于比较两个表达式 a 和b,如果 a 小于、等于或大于b时,它分别返回-1、0或1。

匿名类

现在支持通过new class 来实例化一个匿名类

interface Logger {
public function log(string $msg);
}

class Application {
private $logger;
public function getLogger(): Logger {
return $this->logger;
}

public function setLogger(Logger $logger) {
$this->logger = $logger;
}
}

$app = new Application;
$app->setLogger(new class implements Logger {
public function log(string $msg) {
echo $msg;
}
});

define() 支持定义常量数组

define('ARR',['a','b']);
echo ARR[1];// a

命名空间引用优化

// PHP7以前语法的写法 
use FooLibrary\Bar\Baz\ClassA; 
use FooLibrary\Bar\Baz\ClassB; 
// PHP7新语法写法 
use FooLibrary\Bar\Baz\{ ClassA, ClassB};

Throwable接口

Throwable 是 PHP 7 中可以用作任何对象抛出声明的基本接口,包括 Expection (异常)和 Error (错误)。(在5中只支持扔出 Expection )

过去的 PHP,处理致命错误几乎是不可能的。致命错误不会调用, set_error_handler() 设置的处理方式,而是简单的停止脚本的执行。

在 PHP7 中,当致命错误和可捕获的错误(E_ERROR 和 E_RECOVERABLE_ERROR)发生时会抛出异常,而不是直接停止脚本的运行。

Throwable {
    
  /* 抽象方法 */
  abstract public string getMessage ( void ) // 获取抛出的消息内容

  abstract public int getCode ( void ) // 获取抛出的错误代码

  abstract public string getFile ( void ) // 获取产生异常的文件名

  abstract public int getLine ( void ) // 获取相关行号

  abstract public array getTrace ( void ) // 获取追踪信息,返回数组形式

  abstract public string getTraceAsString ( void ) // 获取追踪信息,返回字符串形式

  abstract public Throwable getPrevious ( void ) // 返回上一个 Throwable

  abstract public string __toString ( void ) // 抛出的对象以字符串形式返回,可以用 echo 打印相应结果

}

不支持老式的构造方法

不推荐以类名为构造函数的使用方法。

session_start方法选项数组

session_start支持调用时传入session配置。


废弃方法和功能

define大小写不敏感的常量

大小写不敏感的常量声明现已被废弃, 将 TRUE 作为第三个参数传递给 define()会导致一个废弃警告。

在字符串中搜索非字符串内容

废弃:将一个非字符串内容传递给字符串搜索函数。 在将来所有待搜索的内容都将被视为字符串,而不是 ASCII 编码值。如果需要依赖这个特性,你应该 要么显示地进行类型转换(转为字符串),或者显示地调用 chr()。 以下是受到影响的方法:

图像处理和 GD 库

image2wbmp() 已被废弃。

ODBC废弃

不再支持odbc编程。

mcrypt系列函数

mcrypt_*系列函数都将被移除。推荐使用:openssl 序列函数。

foreach修改

foreach()循环对数组内部指针不再起作用

$arr = [1,2,3];
foreach ($arr as &$val) {
    echo current($arr);// php7 全返回0
}

按照值进行循环的时候, foreach是对该数组的拷贝操作


杂项

  • 1.debug_zval_dump() 现在打印 “int” 替代 “long”, 打印 “float” 替代 “double”

  • 2.dirname() 增加了可选的第二个参数, depth, 获取当前目录向上 depth 级父目录的名称。

  • 3.getrusage() 现在支持 Windows.mktime() and gmmktime() 函数不再接受 is_dst 参数。

  • 4.preg_replace() 函数不再支持 “\e” (PREG_REPLACE_EVAL). 应当使用 preg_replace_callback() 替代。

  • 5.setlocale() 函数不再接受 category 传入字符串。 应当使用 LC_* 常量。

  • 6.exec(), system() and passthru() 函数对 NULL 增加了保护.

  • 7.shmop_open() 现在返回一个资源而非一个int, 这个资源可以传给shmop_size(), shmop_write(), shmop_read(), shmop_close() 和 shmop_delete().

  • 8.为了避免内存泄露,xml_set_object() 现在在执行结束时需要手动清除 $parse。

相关文章

  • PHP7新增和修改内容涉猎

    新特性 传参类型拓展 指定形参类型是PHP 5就支持的一项特性, 形参支持 array - 数组、 object ...

  • php7,go,python,java之「函数」

    介绍4种语音的函数定义和特殊的注意事项。横向对比,便于理解。 php7的函数定义 php7新增了更加严格的函数声明...

  • PHP 7 新特征

    最好的语言发布了新的版本,一个划时代的大版本:PHP7。 PHP7修复了大量BUG,新增了功能和语法糖。这些改动涉...

  • 【总结】2016.12.15

    计划的任务 接口对接 修改模板标签加上id标识和tag标识 实际完成 修改模板+接口对接(8) 新增的空内容表示页...

  • PHP7新增特性和改变

    新增特性和改变: 1.declare(strict_type=1); 如果不开启strict_type,PHP...

  • PHP7新特性

    PHP7新增特性 新增操作符1.“太空船”操作符“<=>” 2.操作符“??”如果变量存在且值不为NULL, 它就...

  • git 2020-12-10

    1.git 常用命令:git add . 添加所有的修改和新增的内容到暂存区git commit -m "com...

  • 父组件子组件实行监听来区分是新增还是修改,element弹框插件

    父文件html下的 新增修改弹窗的子组件 html写法 接下来看新增和修改的方法 删除子组件的写法

  • php的两个错误

    版本:php7 数据库错误 解决办法:修改php.ini 生成图片 解决办法:修改php.ini

  • 彩云【13】(修正版)

    高亮:您正在阅读《彩云》前1-20章的修改文完整内容。此篇为第13章,修正版较旧版出现完善内容,有修改设定,有新增...

网友评论

      本文标题:PHP7新增和修改内容涉猎

      本文链接:https://www.haomeiwen.com/subject/inggxhtx.html