1、use增强

以thinkphp5.0为例

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

2、匿名类

<?php
class Outer
{
private $prop = 1;
protected $prop2 = 2;
protected function func1()
{
return 3;
}
public function func4()
{
return $this->prop;
}
public function func2()
{
return new class() extends Outer { public function func3()
{
return $this->prop2 + $this->func4() + $this->func1();
}
};
}
} echo (new class() extends Outer{})->func4();
echo (new Outer)->func2()->func3();
<?php
$arr = array();
for ($i=0; $i<3; $i++){
$arr[] = new class($i){
public $index=0;
function __construct($i)
{
$this->index = $i;
echo 'create</br>';
}
public function getVal(){
echo $this->index;
}
};
}
$arr[1]->getVal();
echo '<br>';
var_dump($arr[1]);

Generator 加强

<?php
$input = <<<'EOF'
1;PHP;Likes dollar signs
2;Python;Likes whitespace
3;Ruby;Likes blocks
EOF; function input_parser($input) {
foreach (explode("\n", $input) as $line) {
$fields = explode(';', $line);
$id = array_shift($fields); yield $id => $fields;
}
} foreach (input_parser($input) as $id => $fields) {
echo "$id:<br>";
echo " $fields[0]<br>";
echo " $fields[1]<br>";
}
<?php
function gen_three_nulls() {
foreach (range(1, 3) as $i) {
yield;
}
} var_dump(iterator_to_array(gen_three_nulls()));
<?php
function gen()
{
yield 1;
yield 2; yield from gen2();
} function gen2()
{
yield 3;
yield 4;
}
print_r(iterator_to_array(gen(),false));
// foreach (gen() as $val)
// {
// echo $val, PHP_EOL;
// }

Closure::call()

<?php
class A {private $x = 1;} // Pre PHP 7 代码
$getXCB = function() {return $this->x;};
$getX = $getXCB->bindTo(new A, 'A'); // intermediate closure
echo $getX(); // PHP 7+ 代码
$getX = function() {return $this->x;};
echo $getX->call(new A);

define可定义数组常量

<?php
define('ANIMALS', [
'dog',
'cat',
'bird'
]); echo ANIMALS[1]; // 输出 "cat"
?>

函数新增内容

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. 【python之路28】模块python与excel

    一.可使用的第三方库 python中处理excel表格,常用的库有xlrd(读excel)表.xlwt(写excel)表.openpyxl(可读写excel表)等.xlrd读数据较大的excel表时效 ...

  2. leetcode 665

    665. Non-decreasing Array Input: [4,2,3] Output: True Explanation: You could modify the first 4 to 1 ...

  3. js的Date()时间对象

    var nowDate = new Date(); nowDate.getYear(); //获取当前年份(2位) nowDate.getFullYear(); //获取完整的年份(4位,1970-? ...

  4. CSS--去除除文本基线的几种方式

    削除文本基线的几种方式:1.display:block2.vertical-align:middle3.font-size:0px

  5. Javascript实现多行字符串

    打开百度首页,进入控制台的时候,我们在console控制台总可以看到一段文字: 这些文字是如何显示在控制台的呢?? Javascript中的函数被看作是一个对象拥有自己的方法,其中一个小方法fn.to ...

  6. WPF 实现简单的跑马灯

    本文用WPF的动画实现一个简单的跑马灯 xmal: <Window x:Class="wpfstatusBar.MainWindow" xmlns="http:// ...

  7. jQuery控制导航条样式

    原理:点击当前元素时,当前元素添加(样式类),父辈的兄弟姐妹的孩子('a')去掉此样式类. 代码如下: /*次要导航*/ $(".subnav li a").click(funct ...

  8. [待验证]使用hibernate注解忘记引入mapping导致的问题

    这个问题好像是注解主键的时候,主键没有设置为int型,我设置了个string(想直接用uuid)导致的 后来学习了一下,这个主键的注解,生成策略有很多种,换成别的,就可以使用string类型 编译报错 ...

  9. Vue.之.项目开发工具选用

    Vue.之.项目开发工具选用 上篇文章记录了创建项目,这篇文件记录,如何对创建的项目进行开发.这里选择一个工具:Visual Studio Code (请自行下载安装) 1. 打开VSCode工具,并 ...

  10. oracle之FUNCTION拙见

    一.介绍 函数(Function)为一命名的存储程序,可带参数(有无均可),有返回值 函数和过程的结构类似,但必须有一个RETURN子句,用于返回函数值. 函数说明要指定函数名.返回值的类型,以及参数 ...