经验首页 前端设计 程序设计 Java相关 移动开发 数据库/运维 软件/图像 大数据/云计算 其他经验
当前位置:技术经验 » 程序设计 » PHP » 查看文章
浅谈PHP5.6 与 PHP7.0 区别
来源:jb51  时间:2019/10/10 8:36:04  对本文有异议

两者的区别

  • PHP7.0 比PHP5.6性能提升了两倍。
  • PHP7.0全面一致支持64位。
  • PHP7.0之前出现的致命错误,都改成了抛出异常。
  • 增加了空结合操作符(??)。效果相当于三元运算符。
  • PHP7.0新增了函数的返回类型声明。
  • PHP7.0新增了标量类型声明。
    • PHP 7 中的函数的形参类型声明可以是标量。在 PHP 5 中只可以是类名、接口、array 或者 callable (PHP 5.4,即可以是函数,包括匿名函数),现在也可以使用 string、int、float和 bool 了。
  • 新增加了匿名类。
    • PHP 5.3 开始有了匿名函数,现在又新增了匿名类;
  • PHP7.0之后溢移除了一些老的不再支持的SAPI(服务器端应用编程端口)和扩展。
  • define 可以定义常量数组。

PHP标量类型

  1. #主要分为两种模式,强制性模式和严格模式
  2. declare(strict_types=1)
  3. #1表示严格类型校验模式,作用于函数调用和返回语句;0表示弱类型校验模式。

返回类型声明

PHP 7 增加了对返回类型声明的支持。 类似于参数类型声明,返回类型声明指明了函数返回值的类型。

  1. <?php
  2.  
  3. function arraysSum(array ...$arrays): array
  4. {
  5. return array_map(function(array $array): int {
  6. return array_sum($array);
  7. }, $arrays);
  8. }
  9.  
  10. print_r(arraysSum([1,2,3], [4,5,6], [7,8,9]));
  11.  

NULL合并运算符

如果变量存在且值不为NULL, 它就会返回自身的值,否则返回它的第二个操作数。

  1. $site = isset($_GET['site']) ? $_GET['site'] : 'wo';
  2. #简写成
  3. $site = $_GET['site'] ??'wo';

太空船操作符(组合比较符)

太空船操作符用于比较两个表达式。当$a小于、等于或大于$b时它分别返回-1、0或1

  1. <?php
  2. // 整数
  3. echo 1 <=> 1; // 0
  4. echo 1 <=> 2; // -1
  5. echo 2 <=> 1; // 1
  6.  
  7. // 浮点数
  8. echo 1.5 <=> 1.5; // 0
  9. echo 1.5 <=> 2.5; // -1
  10. echo 2.5 <=> 1.5; // 1
  11. // 字符串
  12. echo "a" <=> "a"; // 0
  13. echo "a" <=> "b"; // -1
  14. echo "b" <=> "a"; // 1
  15. ?>
  16.  

通过 define() 定义常量数组

*使用define()定义常量数组

  1. <?php
  2. define('ANIMALS', [
  3. 'dog',
  4. 'cat',
  5. 'bird'
  6. ]);
  7.  
  8. echo ANIMALS[1]; // 输出 "cat"
  9. ?>
  10.  

使用define()定义常量

  1. <?php
  2. define("CONSTANT", "Hello world.");
  3. echo CONSTANT; // outputs "Hello world."
  4. ?>

使用关键字 const 定义常量

  1. <?php
  2. const CONSTANT = 'Hello World';
  3.  
  4. echo CONSTANT;
  5. ?>
  6.  

匿名类

PHP7 支持持通过new class 来实例化一个匿名类,这可以用来替代一些“用后即焚”的完整类定义。

  1. <?php
  2. interface Logger {
  3. public function log(string $msg);
  4. }
  5.  
  6. class Application {
  7. private $logger;
  8.  
  9. public function getLogger(): Logger {
  10. return $this->logger;
  11. }
  12.  
  13. public function setLogger(Logger $logger) {
  14. $this->logger = $logger;
  15. }
  16. }
  17.  
  18. $app = new Application;
  19. $app->setLogger(new class implements Logger {
  20. public function log(string $msg) {
  21. echo $msg;
  22. }
  23. });
  24.  
  25. var_dump($app->getLogger());
  26. ?>
  27.  

输出:

  1. object(class@anonymous)#2 (0) {
  2. }

参考

新特性

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持w3xue。

 友情链接:直通硅谷  点职佳  北美留学生论坛

本站QQ群:前端 618073944 | Java 606181507 | Python 626812652 | C/C++ 612253063 | 微信 634508462 | 苹果 692586424 | C#/.net 182808419 | PHP 305140648 | 运维 608723728

W3xue 的所有内容仅供测试,对任何法律问题及风险不承担任何责任。通过使用本站内容随之而来的风险与本站无关。
关于我们  |  意见建议  |  捐助我们  |  报错有奖  |  广告合作、友情链接(目前9元/月)请联系QQ:27243702 沸活量
皖ICP备17017327号-2 皖公网安备34020702000426号