1、use增强

以thinkphp5.0为例

namespace app\home\controller;
use think\{Loader,Controller,Captcha,Request};

2、匿名类

  1. <?php
  2. class Outer
  3. {
  4. private $prop = 1;
  5. protected $prop2 = 2;
  6. protected function func1()
  7. {
  8. return 3;
  9. }
  10. public function func4()
  11. {
  12. return $this->prop;
  13. }
  14. public function func2()
  15. {
  16. return new class() extends Outer {
  17.  
  18. public function func3()
  19. {
  20. return $this->prop2 + $this->func4() + $this->func1();
  21. }
  22. };
  23. }
  24. }
  25.  
  26. echo (new class() extends Outer{})->func4();
  27. echo (new Outer)->func2()->func3();
  1. <?php
  2. $arr = array();
  3. for ($i=0; $i<3; $i++){
  4. $arr[] = new class($i){
  5. public $index=0;
  6. function __construct($i)
  7. {
  8. $this->index = $i;
  9. echo 'create</br>';
  10. }
  11. public function getVal(){
  12. echo $this->index;
  13. }
  14. };
  15. }
  16. $arr[1]->getVal();
  17. echo '<br>';
  18. var_dump($arr[1]);

Generator 加强

  1. <?php
  2. $input = <<<'EOF'
  3. 1;PHP;Likes dollar signs
  4. 2;Python;Likes whitespace
  5. 3;Ruby;Likes blocks
  6. EOF;
  7.  
  8. function input_parser($input) {
  9. foreach (explode("\n", $input) as $line) {
  10. $fields = explode(';', $line);
  11. $id = array_shift($fields);
  12.  
  13. yield $id => $fields;
  14. }
  15. }
  16.  
  17. foreach (input_parser($input) as $id => $fields) {
  18. echo "$id:<br>";
  19. echo " $fields[0]<br>";
  20. echo " $fields[1]<br>";
  21. }
  1. <?php
  2. function gen_three_nulls() {
  3. foreach (range(1, 3) as $i) {
  4. yield;
  5. }
  6. }
  7.  
  8. var_dump(iterator_to_array(gen_three_nulls()));
  1. <?php
  2. function gen()
  3. {
  4. yield 1;
  5. yield 2;
  6.  
  7. yield from gen2();
  8. }
  9.  
  10. function gen2()
  11. {
  12. yield 3;
  13. yield 4;
  14. }
  15. print_r(iterator_to_array(gen(),false));
  16. // foreach (gen() as $val)
  17. // {
  18. // echo $val, PHP_EOL;
  19. // }

Closure::call()

  1. <?php
  2. class A {private $x = 1;}
  3.  
  4. // Pre PHP 7 代码
  5. $getXCB = function() {return $this->x;};
  6. $getX = $getXCB->bindTo(new A, 'A'); // intermediate closure
  7. echo $getX();
  8.  
  9. // PHP 7+ 代码
  10. $getX = function() {return $this->x;};
  11. echo $getX->call(new A);

define可定义数组常量

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

函数新增内容

1、新增参数声明类型(bool,float,int,string)

2、严格模式:declare(strict_types=1);

3、可变参数数量(...$num)

4、新增函数返回值的类型声明

5、可变函数,使用变量保存函数名

6、匿名函数

一般用作一个回调函数参数的值,也可以作为变量的值

7、递归和迭代

新增变化

1、php7版本,字符串中的十六进制字符,不在作为数字。

2、intdiv(x,y) 整除运算符(x除以y)

3、x<=>y 组合比较符 (x等于y,返回0;x大于y,返回1;x小于y,返回-1)

4、三元运算符

$a = (1>2)?'big':'small';

5、变量作用域:局部、全局、静态、参数

函数体内部定义的变量为局部变量,函数体外部定义的变量为全局变量,使用static关键字可以使函数执行完毕局部变量保留,函数定义的参数为参数变量

6、常量定义

define()和const定义

7、预定义常量

__LINK__:文件中的当前行号

__FILE__:文件的完整路径和文件名

__DIR__:文件所在的目录

__FUNCTION__:函数名称

__CLASS__:类的名称

__TRAIT__:trait的名字

__METHOD__:类的方法名

__NAMESPACE__:当前命名空间的名称

php7新增以下常量

PHP_INT_MIN等等

8、while循环

$i = 1;

while($i<=10){

  echo $i++;

}

打印结果:12345678910

9、do while

$i=0;

do{

  $i++;

  echo $i;

}while($i<10);

执行结果:12345678910

10、goto

goto a;

echo 'adad';

a:

echo 'sdsd';

执行结果:sdsd

php7 新内容的更多相关文章

  1. 【php】php7新特性及其优化原理

    php7.x版本系列相比之前的php的版本提交性能提高了不少,这里面其中的一些主要改变是性能提高的关键,主要有以下内容. 1.zval使用栈内存   在zend引擎和扩展中,经常要创建php变量,其底 ...

  2. Windows cmd 长时间不输出新内容 直到按下ctrl + c 取消或者回车的解决办法

    换了一台新电脑, 在使用 ant 拷贝大量文件的时候 cmd 窗口过了很久没有继续输出新的内容,远远超过平时的耗时, 以为已经卡死 按下 ctrl + c 取消, 这时并没有取消, 而是输出了新内容, ...

  3. 新内容转入github

    所有新内容已经转入 https://github.com/honggzb/Study-General https://github.com/honggzb/Study2016

  4. jQuery 往table添加新内容有以下四个方法:

    Query 添加新内容有以下四个方法: append() - 在被选元素的结尾插入内容 prepend() - 在被选元素的开头插入内容 after() - 在被选元素之后插入内容 before() ...

  5. xcode10设置自定义代码快 - Xcode10新功能新内容

    1. 2. 详情: Xcode10新功能新内容https://blog.csdn.net/u010960265/article/details/80630118

  6. 添加新内容的四个 jQuery 方法:append,prepend,after,before

    添加新内容的四个 jQuery 方法区别如下: append() - 在被选元素(里面)的结尾插入内容prepend() - 在被选元素(里面)的开头插入内容 //jQuery append() 方法 ...

  7. Ajax实例二:取得新内容

    Ajax实例二:取得新内容 通过点击pre和next按钮,从服务器取得最新内容. HTML代码 <div id="slide">图片显示区</div> &l ...

  8. 使用FileStream向txt格式的文本文件 "追加" 新内容并读取

    原文:使用FileStream向txt格式的文本文件 "追加" 新内容并读取 //得到文件路径. static string filePath = AppDomain.Curren ...

  9. PHPStorm使用PHP7新特性出现红色波浪错误

    今天在项目中使用PHP7新特性时PHPStorm出现了如下红色错误,看着让人很不舒服,明明没有错 本地配置LNMP的PHP版本是7.2所以不是安装的PHP版本过低的问题,而是PHPStorm默认支持的 ...

随机推荐

  1. 解Bug之路-记一次中间件导致的慢SQL排查过程

    解Bug之路-记一次中间件导致的慢SQL排查过程 前言 最近发现线上出现一个奇葩的问题,这问题让笔者定位了好长时间,期间排查问题的过程还是挺有意思的,正好博客也好久不更新了,就以此为素材写出了本篇文章 ...

  2. 2019-10-11-VisualStudio-配置多进程调试快捷键启动项目

    title author date CreateTime categories VisualStudio 配置多进程调试快捷键启动项目 lindexi 2019-10-11 15:33:32 +080 ...

  3. CI框架 - Xhprof性能监控,用钩子hooks实现

    安装Xhprof参考:http://www.cnblogs.com/qq917937712/p/8889001.html 第一步:配置config.php $config['enable_hooks' ...

  4. Mac OS X中,有三种方式来实现启动项的配置

    Mac OS x 启动项设置 Mac OS X的启动原理: 1,mac固件激活,初始化硬件,加载BootX引导器. 2,BootX加载内核与内核扩展(kext). 3,内核启动launchd进程. 4 ...

  5. 怎么比较两个list中相同的值个数!

    怎么比较两个list中相同的值个数!int count=0;for(int i=0;i<list1.size();i++){ for(int j=0;j<list2.size();j++) ...

  6. Aspose Words、Excel导出等操作

    /*Word先保存再输出-下载*/ strReportFilePath = Server.MapPath("~") + strReportFilePath; doc.Save(st ...

  7. 爬取简书图片(使用BeautifulSoup)

    import requests from bs4 import BeautifulSoup url_list = [] kv = {'User-Agent':'Mozilla/5.0'} r = re ...

  8. vagrant简介

    什么是vagrant? 简单理解,就是可以通过Vagrant这个工具管理虚拟机,比如说想创建一个centos环境的虚拟机,不需要安装系统这么麻烦,通过vagrant可以快速创建 官网地址:https: ...

  9. BZOJ4719[NOIP2016提高组Day1T2] 天天爱跑步

    #261. [NOIP2016]天天爱跑步 描述 提交 自定义测试 小C同学认为跑步非常有趣,于是决定制作一款叫做<天天爱跑步>的游戏.<天天爱跑步>是一个养成类游戏,需要玩家 ...

  10. HR招聘_(六)_招聘方法论(面试环节·面试方法)

    面试方法:常用行为面试和压力面试 行为面试法 定义: 通过要求面试对象描述其过去某项工作或者生活经历的具体情况来了解面试对象各方面素质特征的方法.行为面试法的基本假设是:一个人过去的行为可以预测这个人 ...