php7 新内容
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 新内容的更多相关文章
- 【php】php7新特性及其优化原理
php7.x版本系列相比之前的php的版本提交性能提高了不少,这里面其中的一些主要改变是性能提高的关键,主要有以下内容. 1.zval使用栈内存 在zend引擎和扩展中,经常要创建php变量,其底 ...
- Windows cmd 长时间不输出新内容 直到按下ctrl + c 取消或者回车的解决办法
换了一台新电脑, 在使用 ant 拷贝大量文件的时候 cmd 窗口过了很久没有继续输出新的内容,远远超过平时的耗时, 以为已经卡死 按下 ctrl + c 取消, 这时并没有取消, 而是输出了新内容, ...
- 新内容转入github
所有新内容已经转入 https://github.com/honggzb/Study-General https://github.com/honggzb/Study2016
- jQuery 往table添加新内容有以下四个方法:
Query 添加新内容有以下四个方法: append() - 在被选元素的结尾插入内容 prepend() - 在被选元素的开头插入内容 after() - 在被选元素之后插入内容 before() ...
- xcode10设置自定义代码快 - Xcode10新功能新内容
1. 2. 详情: Xcode10新功能新内容https://blog.csdn.net/u010960265/article/details/80630118
- 添加新内容的四个 jQuery 方法:append,prepend,after,before
添加新内容的四个 jQuery 方法区别如下: append() - 在被选元素(里面)的结尾插入内容prepend() - 在被选元素(里面)的开头插入内容 //jQuery append() 方法 ...
- Ajax实例二:取得新内容
Ajax实例二:取得新内容 通过点击pre和next按钮,从服务器取得最新内容. HTML代码 <div id="slide">图片显示区</div> &l ...
- 使用FileStream向txt格式的文本文件 "追加" 新内容并读取
原文:使用FileStream向txt格式的文本文件 "追加" 新内容并读取 //得到文件路径. static string filePath = AppDomain.Curren ...
- PHPStorm使用PHP7新特性出现红色波浪错误
今天在项目中使用PHP7新特性时PHPStorm出现了如下红色错误,看着让人很不舒服,明明没有错 本地配置LNMP的PHP版本是7.2所以不是安装的PHP版本过低的问题,而是PHPStorm默认支持的 ...
随机推荐
- Tensorflow技巧
1.尽量控制图片大小在1024以内,不然显存会爆炸. 2.尽量使用多GPU并行工作,训练下降速度快. 3.当需要被检测的单张图片里物体太多时,记得修改Region_proposals的个数 4.测试的 ...
- 用Python的requests库作接口测试——对响应进行迭代
使用 requests.Response.iter_lines() 方法,可以很方便地对流式API(例如 Twitter的流式API )的响应进行迭代. 简单地设置 stream 为 True 便可以 ...
- 单元测试神器Mockito
Mockit是一种mock工具/框架.mock可以模拟各种各样的对象,从而代替真正的对象做出希望的响应 1.工程中引入Mockito #以gradle的方式为例 testCompile("o ...
- bzoj 2503 相框——思路
题目:https://www.lydsy.com/JudgeOnline/problem.php?id=2503 我也知道应该只关注度数. #include<iostream> #incl ...
- [BZOJ2427][HAOI2010]软件安装-tarjan缩点-树上dp
<题面> 这个题真伤人 之前Tarjan和树规都没学好,吃了不少亏,仔仔细细的搞了一天,收获颇丰 先来一个Tarjan的链接:$\mathbb{O}$ 题目的数据比较友好: $dp$不对: ...
- Http中GET和POST请求的区别
https://mp.weixin.qq.com/s/_oLnkDQn3TE7XdFWCT5Img GET请求 GET /books/?sex=man&name=Professional HT ...
- OpenLayers测量距离和面积
<!DOCTYPE html> <html> <head> <title>测量距离和面积</title> <meta http-equ ...
- Color the ball HDU - 1556 (线段树)
思路:线段树,区间更新 #include<iostream> #include<vector> #include<string> #include<cmath ...
- jquery 获取图片宽高为0的问题
原理:页面加载完了,图片不一定加载完了. $(function(){ $("img").on("load",function(){ //核心 var w = $ ...
- spring boot resttemplate发送post,get请求
参考博客: https://blog.csdn.net/weixin_42456466/article/details/80728387 https://www.cnblogs.com/QQParad ...