PHP7是什么鬼?PHP7是PHP编程语言的一个主要版本,被称为开发Web应用程序的一场革命,支持移动企业和云应用程序的开发和交付。这个版本被认为是自2004年发布PHP5以来PHP中最重要的变化。新特性PHP7增加了几十个特性,最值得注意的是下面提到的-改进的性能-PHP7中合并了PPNG代码,速度是PHP5的两倍;减少内存消耗——优化后PHP7使用更少的资源;标量类型声明——现在可以强制执行参数和返回值类型;一致的64位支持——继续支持64位架构的机器;改进的异常层次结构——改进了异常层次结构;许多致命错误转换为异常-exceptional增加了对许多致命错误的转换异常的覆盖范围;安全随机数生成器-添加了新的安全随机数生成器API;已弃用的API和扩展已删除-不同的旧的和不受支持的应用程序和扩展,已从最新版本中删除;添加了空合并运算符(??)的新空合并运算符;还添加了对返回类型和参数类型的返回和标量类型声明支持;添加了对匿名匿名类的支持;零成本语句支持零成本连接断言。PHP7使用新的ZendEngine3.0使应用程序性能提高一倍,并且比PHP5.6消耗的内存少50%。它可以为更多的并发用户提供服务,而无需任何额外的硬件。考虑到今天的工作负载PHP7设计和重构。PHP7-标量类型声明PHP7中引入了一个新特性,即标量类型声明。标量类型声明有两个选项:Mandatory-Mandatory是默认模式,不需要指定。严格-严格模式具有明确的含义。以下类型的函数参数可以通过上面的方式强制执行:intfloatboolstringinterfacesarraycallableexample-coercivemode浏览器将产生以下输出-9example-strictmode浏览器将产生以下输出-致命错误:未捕获类型错误:传递给sum()的参数2必须是整数、字符串类型给定,..PHP7-返回类型声明PHP7中的一个新特性,引入了返回类型声明。返回类型声明指定函数的返回类型。以下返回类型是可声明的:intfloatboolstringinterfacesarraycallable示例-有效返回类型浏览器将产生以下输出-5示例-无效返回类型这将产生以下浏览器输出-致命错误:未捕获类型错误:returnIntValue()的返回值必须是整数类型,返回浮点数PHP7-空合并运算符PHP7中的一个新功能,引入了空合并运算符(??)。它与isset()函数结合使用来代替三元运算。空合并运算符返回其第一个操作数(如果存在且不为NULL);否则返回第二个操作数。示例");//使用三元运算符的等效代码$username=isset($_GET['username'])?$_GET['username']:'notpassed';print($username);print("
");//链接??operation$username=$_GET['username']??$_POST['用户名']??'notpassed';print($username);?>这将在浏览器中产生以下输出-notpassednotpassednotpassedPHP7spaceshipoperatorPHP7中有一个新特性-引入了spaceship运算符。它用于比较两个表达式。当第一个表达式分别小于、等于或大于第二个表达式时,它返回-1、0或1。示例1);print("
");print(1<=>2);print("
");print(2<=>1);print("
");print("
");//浮动比较print(1.5<=>1.5);print("
");print(1.5<=>2.5);print("
");print(2.5<=>1.5);print("
");print("
");//字符串比较print("a"<=>"a");print("
");print("a"<=>"b");print("
");print("b"<=>"a");print("
");?>这将在浏览器中产生以下输出-0-110-110-11PHP7-常量数组现在可以使用define()函数定义数组常量.在PHP5.6中,它们只能使用const关键字来定义。示例这将在browser-catPHP7-匿名类PHP7-匿名类现在可以使用新类定义匿名类。可以使用匿名类来代替完整的类定义。例子->logger=$logger;}}$app=newApplication;$app->setLogger(新类实现Logger{publicfunctionlog(string$msg){print($msg);}});$app->getLogger()->log("MyfirstLogMessage");?>这将在浏览器中产生以下输出-我的第一条日志消息PHP7-添加到临时绑定的Closure::call()Closure::call()方法(bindTo)对象范围以一种方便的方式封装和调用它,这比绑定到PHP5.6的性能更快。示例-PrePHP7x;};//Bindaclosure$value=$getValue->bindTo(newA,'A');print($value());?>这将在浏览器中产生以下输出-1示例-PHP7+x;};print($value->call(newA));?>这将在浏览器中产生以下输出-1PHP7-filterunserialize()PHP7引入了filteredunserialize()函数来在反序列化不受信任的数据对象时提供更好的安全性。它可以防止可能的代码注入,并使开发人员能够使用序列化将类列入白名单。示例obj1prop=1;$obj2=newMyClass2();$obj2->obj2prop=2;$serializedObj1=serialize($obj1);$serializedObj2=serialize($obj2);//接受所有类的默认行为//第二个参数可以省略。//如果allowed_classes传递为false,unserialize将所有对象转换为__PHP_Classobject$data=unserialize($serializedObj1,["allowed_classes"=>true]);//将除MyClass1和MyClass2之外的所有对象转换为__PHP_Incomplete_Class对象$data2=unserialize($serializedObj2,["allowed_classes"=>["MyClass1","MyClass2"]]);print($data->obj1prop);print("
");print($data2->obj2prop);?>这将在浏览器中产生以下输出-12PHP7-InternationalCharactersInPHP7,一个新的IntlChar类添加的目的是公开更多的ICU功能。此类定义了许多可用于操作Unicode字符的静态方法和常量。在使用此类之前,您需要安装Intl扩展。示例这将生成以下输出-10ffffCOMMERCIALATtruePHP7-CSPRNG在PHP7中,引入了以下两个新函数以跨平台方式生成加密的安全整数和字符串。random_bytes()-生成加密安全的伪随机字节。random_int()-生成加密安全的伪随机整数。random_bytes()random_bytes()适用于生成密码、任意长度的加密随机字符串,例如:生成盐、密钥或初始向量。语法stringrandom_bytes(int$length)参数length-返回随机字符串的字节长度返回值返回包含请求的加密安全随机字节数的字符串。错误/异常如果找不到合适的随机源,将引发异常如果给出无效参数,将抛出TypeError如果给出无效字节长度,将抛出错误Example这将在浏览器中产生以下输出-54cc305593random_int()random_int()产生适合在结果中使用的加密随机整数非常重要。语法intrandom_int(int$min,int$max)参数min-返回最小值,它必须是PHP_INT_MIN或更大的值max-返回最大值,它必须小于或等于PHP_INT_MAX返回值返回最小值值(min)到最大(max)范围,包括加密安全随机整数。错误/异常如果找不到合适的随机源,将抛出异常。如果给定的参数无效,将抛出TypeError。如果最大值小于最小值,则会抛出错误。示例这将在浏览器中产生以下输出-614-882
