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. Java获取系统时间少了八个小时

    Java获取系统时间少了八个小时 今天忽然遇到需要获取当前时间的问题,我向来谨慎,先测试获取到的系统时间是否正确,结果竟然发现少了八个小时,晕死了,记得之前在页面用javascript获取过当前时间, ...

  2. reduce个数问题

    reduce的数目到底和哪些因素有关 1.我们知道map的数量和文件数.文件大小.块大小.以及split大小有关,而reduce的数量跟哪些因素有关呢?  设置mapred.tasktracker.r ...

  3. tensorflow根据pb多bitch size去推导物体

    with self.detection_graph.as_default(): with tf.Session(graph=self.detection_graph) as sess: # Expan ...

  4. 2019-4-17-从-dotnet-core-3.0-的特性让-WPF-布局失效讨论-API-兼容

    title author date CreateTime categories 从 dotnet core 3.0 的特性让 WPF 布局失效讨论 API 兼容 lindexi 2019-4-17 1 ...

  5. 启动easy-mock

    1.启动mongodb 启动mongodb服务器: /usr/local/mongodb/bin/mongod  -config  /usr/local/mongodb/data/mongodb.co ...

  6. float示例

    <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8&quo ...

  7. Iterm2 快捷键介绍

    Mac 原来自带的终端工具 Terminal 不好用是出了名的,虽然最近几个版本苹果稍微做了些优化,功能上,可用性方面增强不少,无奈有个更好用的 Iterm2 摆在那,基本上也就没有多少出场机会了 I ...

  8. python学生管理系统

    import osimport re #获取本机用户名,构建student.txt文件名创建在左面import getpassusername=getpass.getuser()print(" ...

  9. python基础--包、logging、hashlib、openpyxl、深浅拷贝

    包:它是一系列模块文件的结合体,表现形式就是一个文件夹,该文件夹内部通常会有一个__init__.py文件,包的本质还是一个模块. 首次导入包:(在导入语句中中 . 号的左边肯定是一个包(文件夹)) ...

  10. python自动化--批量执行测试之生成报告

    一.生成报告 1.先执行一个用例,并生成该用例的报告 # -*- coding: utf-8 -*- from selenium import webdriver from selenium.webd ...