某某茶叶有限公司欢迎您!
金沙棋牌在线 > Web前端 > PHP 7 的 5 大新特性

PHP 7 的 5 大新特性

时间:2020-04-07 10:39

1. ?? 运算符(NULL 合并运算符)

把这个放在第一个说是因为我觉得它很有用。用法:

$a = $_GET['a'] ?? 1;

它相当于:

<?php
$a = isset($_GET['a']) ? $_GET['a'] : 1;

我们知道三元运算符是可以这样用的:

$a ?: 1

但是这是建立在 $a 已经定义了的前提上。新增的 ?? 运算符可以简化判断。

图片 1

今天凌晨苹果发布了Xcode8正式版,iOS10, 万众瞩目,那么Xcode8到底更新了什么东西呢?,接下来军哥带大家一探究竟

瑞可·罗德里格兹回来了,我们的IGN First也是如此。本月我们将为你带来由Avalanche打造的这款疯狂开放世界游戏的各种独家内容。

  1. 新的屏幕通知查看方式:苹果为iOS 10带来了全新的通知查看功能,即抬起iPhone的屏幕,用户就能看到目前的通知和更新情况。估计很鸡肋, 同旋转屏幕差不多吧, 通常情况下都是关闭的。
  2. 苹果将Siri开放给第三方开发者: 现在用户可以让Siri实现更多的功能,例如让Siri向自己的联系人发送微信信息等。目前Siri可以直接支持的应用有微信、WhatsApp以及Uber、滴滴、Skype等。国内用Siri的应该不太多, 不过Siri向第三方开发者开放, 势必会引起一大波Siri开发热吧。
  3. Siri将会更加智能:Siri将拥有更多对语境的意识。基于用户的地点、日历、联系人、联系地址等,Siri会做出智能建议。Siri将越来越成为一个人工智能机器人,具备深度学习功能。小黄鸡有木有!
  4. 照片应用更新:基于深度学习技术,iOS 10对照片应用有比较大的更新。iOS 10对照片的搜索能力进一步增强,可以检测到新的人物和景色。未来的iPhone能够将相关的照片组织在一起,比如某次旅行的照片、某个周末的照片,并且能够进行自动编辑。iOS 10照片还新增了一个“记忆”标签。同3一样都是人工智能的非常低端的玩法, 然而并没有什么卵用。
  5. 苹果地图:有点类似Siri和照片的更新,苹果地图也增加了很多预测功能,例如苹果地图能够将提供附近的餐厅建议。苹果地图的界面也得到了重新设计,更加的简洁,并增加了交通实时信息。新的苹果地图还将整合在苹果CarPlay中,将为用户提供turn-by-turn导航功能。和Siri一样,地图也将开放给开发者。是不是抄袭滴滴和百度地图呀, 在国内, 有百度和高德足矣!
  6. 苹果音乐:苹果音乐的界面得到了更新,界面会更加简洁、支持多任务,增加最近播放列表。苹果音乐现在已经有1500万付费用户。弱爆了有木有, 国内随便几个好的音乐app都比这强, 反正我是不用。
  7. 苹果新闻:苹果新闻在iOS 10中得到了较大的更新,应用界面被重新设计,增加了订阅功能,更新了通知功能,目前已经有2000家出版商和Apple News合作。还算是有点新意, 但我觉得网易新闻和今日头条更好。
  8. HomeKit:iOS 10新增智能家庭应用,支持一键场景模式,HomeKit可以与Siri相连接。这个真的算是唯一的亮点了, 苹果的智能设备要开始更加广泛的使用了吗? 值得期待。
  9. 苹果电话:苹果更新了电话功能,来电时可以区别出骚扰电话。百度助手,xx助手做烂了的功能, 就是大数据吗, 不联网同样没什么用吧, 试问谁会手机一直开着网?数据存本地?我表示不信。
  10. iMesseage:在iMessage方面,用户可以直接在文本框内发送视频、链接,分享实时照片。另外,苹果还增添了表情预测功能,打出的文字若和表情相符,将会直接推荐相关表情。就一IM搞这么花哨还抄袭了些微信的功能,比如新年快乐那个全屏特效。

2. 函数返回值类型声明

官方文档提供的例子(注意 … 的边长参数语法在 PHP 5.6 以上的版本中才有):

<?php
function arraysSum(array ...$arrays): array
{
    return array_map(function(array $array): int {
        return array_sum($array);
    }, $arrays);
}

print_r(arraysSum([1,2,3], [4,5,6], [7,8,9]));

从这个例子中可以看出现在函数(包括匿名函数)都可以指定返回值的类型。

这种声明的写法有些类似于 swift:

func sayHello(personName: String) -> String {
    let greeting = "Hello, " + personName + "!"
    return greeting
}

这个特性可以帮助我们避免一些 PHP 的隐式类型转换带来的问题。在定义一个函数之前就想好预期的结果可以避免一些不必要的错误。

不过这里也有一个特点需要注意。PHP 7 增加了一个 declare 指令:strict_types,既使用严格模式。

使用返回值类型声明时,如果没有声明为严格模式,如果返回值不是预期的类型,PHP 还是会对其进行强制类型转换。但是如果是严格模式, 则会出发一个 TypeError 的 Fatal error。

强制模式:

<?php
function foo($a) : int
{
    return $a;
}

foo(1.0);

以上代码可以正常执行,foo 函数返回 int 1,没有任何错误。

严格模式:

<?php
declare(strict_types=1);

function foo($a) : int
{
    return $a;
}

foo(1.0);
# PHP Fatal error:  Uncaught TypeError: Return value of foo() must be of the type integer, float returned in test.php:6

在声明之后,就会触发致命错误。

是不是有点类似与 js 的 strict mode?

图片 2欢迎界面扁平化网格去掉,是不是好看很多了图片 3常用的放在最前面

《正当防卫》系列的中心思想一以贯之:炸得爽,炸得酷。但主题不变不代表玩不出新花样,以下就是瑞可这次能够尝试的9种新玩法。

综上, iOS10虽然对一些系统的软件进行了更新, 然而并没什么卵用啊, 很多类似的app已经甩它们几十条街了。HomeKit是唯一亮点, 首次对开发者开放的Siri到底能玩出什么花, 还是拭目以待吧。

3. 标量类型声明

PHP 7 中的函数的形参类型声明可以是标量了。在 PHP 5 中只能是类名、接口、array 或者 callable (PHP 5.4,即可以是函数,包括匿名函数),现在也可以使用 string、int、float和 bool 了。

官方示例:

<?php
// Coercive mode
function sumOfInts(int ...$ints)
{
    return array_sum($ints);
}

var_dump(sumOfInts(2, '3', 4.1));

需要注意的是上文提到的严格模式的问题在这里同样适用:强制模式(默认,既强制类型转换)下还是会对不符合预期的参数进行强制类型转换,严格模式下则触发 TypeError 的致命错误。

  • 1.内置表情包(Sticker Packs)

    • 可以通过在Xcode中新建Sticker Pack Application来创建。这种方式可以简单地通过添加图片来在iMessage中添加表情包。添加的贴纸需要满足一下条件图片类型必须是 png、apng、gif或者jpeg文件大小必须 小于500K图片大小必须在 *100 100 到 206 206 *之间

    • 需要注意的是:必须要永远提供 @3x 大小的图片(即 300 300 到 618 618 )。系统可以根据当前设备通过 runtime 自动调整图片来呈现 @2x 和 @1x系统能够自适应的展示贴纸,所以为了更好的展示贴纸,最好提供的贴纸是以下三种大小的类型小型 100100中型 136136大型 206*206

  • 2.iMessage应用iMessage app使用完整的框架和Message app进行交互。使用iMessage app能够在消息应用内呈现一个自定义的用户交互界面。 使用MSMessagesAppViewController创建一个自定义或者动态的表情包浏览器。使用 MSStickerBrowserViewController添加文本、表情、或者媒体文件到消息应用的文本输入框。使用 MSConversation创建带有特定的应用数据交互的消息。使用 MSMessage更新可以相互影响的消息(例如,创建游戏或者可以合作的应用)。

图片 4

4. use 批量声明

PHP 7 中 use 可以在一句话中声明多个类或函数或 const 了:

<?php
use some/namespace/{ClassA, ClassB, ClassC as C};
use function some/namespace/{fn_a, fn_b, fn_c};
use const some/namespace/{ConstA, ConstB, ConstC};

但还是要写出每个类或函数或 const 的名称(并没有像 python 一样的 from some import * 的方法)。

需要留意的问题是:如果你使用的是基于 composer 和 PSR-4 的框架,这种写法是否能成功的加载类文件?其实是可以的,composer 注册的自动加载方法是在类被调用的时候根据类的命名空间去查找位置,这种写法对其没有影响。

从Xcode8beta1就支持类名提示了,所以Xcode8正式版也支持类名提示,你们在也不用忧伤了

抓钩升级

5. 其他的特性

其他的一些特性我就不一一介绍了,有兴趣可以查看官方文档:

简要说几个:

  • PHP 5.3 开始有了匿名函数,现在又有了匿名类了;
  • define 现在可以定义常量数组;
  • 闭包( Closure)增加了一个 call 方法;
  • 生成器(或者叫迭代器更合适)可以有一个最终返回值(return),也可以通过 yield from 的新语法进入一个另外一个生成器中(生成器委托)。

生成器的两个新特性(return 和 yield from)可以组合。具体的表象大家可以自行测试。PHP 7 现在已经到 RC5 了,最终的版本应该会很快到来。

Xcode8支持3.0语法和2.3语法随意切换,默认创建出来是3.0语法, 如果想用2.3语法是可以切换的

《正当防卫》可不是那种“回归初心”类型的游戏,瑞可装备的抓钩一直在进化着,如今已经成为无比强大的多功能道具了。除了快速移动、把敌人物品捆绑在一起之外,抓钩在流程初期就可以附在火箭推进器或者热气球上了。这些功能可以有机结合到一起(你想打造一辆“飞行火箭巴士”也是可以的),让你随心所欲地行动。另外不要忘了,你现在可以一次性发射10条钩索哦,祝你玩得愉快!

值得一提的是Xcode8.0并没有做语法捆绑,在以往的版本中都是捆绑最新的语法PS:苹果越来越开放

玩具