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默认支持的 ...
随机推荐
- 【python之路28】模块python与excel
一.可使用的第三方库 python中处理excel表格,常用的库有xlrd(读excel)表.xlwt(写excel)表.openpyxl(可读写excel表)等.xlrd读数据较大的excel表时效 ...
- leetcode 665
665. Non-decreasing Array Input: [4,2,3] Output: True Explanation: You could modify the first 4 to 1 ...
- js的Date()时间对象
var nowDate = new Date(); nowDate.getYear(); //获取当前年份(2位) nowDate.getFullYear(); //获取完整的年份(4位,1970-? ...
- CSS--去除除文本基线的几种方式
削除文本基线的几种方式:1.display:block2.vertical-align:middle3.font-size:0px
- Javascript实现多行字符串
打开百度首页,进入控制台的时候,我们在console控制台总可以看到一段文字: 这些文字是如何显示在控制台的呢?? Javascript中的函数被看作是一个对象拥有自己的方法,其中一个小方法fn.to ...
- WPF 实现简单的跑马灯
本文用WPF的动画实现一个简单的跑马灯 xmal: <Window x:Class="wpfstatusBar.MainWindow" xmlns="http:// ...
- jQuery控制导航条样式
原理:点击当前元素时,当前元素添加(样式类),父辈的兄弟姐妹的孩子('a')去掉此样式类. 代码如下: /*次要导航*/ $(".subnav li a").click(funct ...
- [待验证]使用hibernate注解忘记引入mapping导致的问题
这个问题好像是注解主键的时候,主键没有设置为int型,我设置了个string(想直接用uuid)导致的 后来学习了一下,这个主键的注解,生成策略有很多种,换成别的,就可以使用string类型 编译报错 ...
- Vue.之.项目开发工具选用
Vue.之.项目开发工具选用 上篇文章记录了创建项目,这篇文件记录,如何对创建的项目进行开发.这里选择一个工具:Visual Studio Code (请自行下载安装) 1. 打开VSCode工具,并 ...
- oracle之FUNCTION拙见
一.介绍 函数(Function)为一命名的存储程序,可带参数(有无均可),有返回值 函数和过程的结构类似,但必须有一个RETURN子句,用于返回函数值. 函数说明要指定函数名.返回值的类型,以及参数 ...