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

最新文章

  1. 《疯狂Java讲义》(三) ---- JDK&amp;JRE&amp;JVM&amp;CLASSPATH
  2. 取出Object对象里面的字段,
  3. 由json字符串生成C#实体类的工具
  4. Create a Qt Widget Based Application—Windows
  5. 史上最易懂的Android jni开发资料--NDK环境搭建
  6. DB2学习
  7. java移位操作符
  8. install samba on crux without net.
  9. 使用Gradle构建Android应用内测版本
  10. maven配置文件里改动默认jre
  11. java中的log
  12. redis的list取出数据方式速度测试
  13. 开源HUSTOJ
  14. LIMIT用法
  15. SQL Server数据库设置自动备份策略
  16. 【redis】1.redis-windows安装+配置介绍
  17. maven的build
  18. tips:Java中的switch的选择因子
  19. 交叉编译zookeeper的C库
  20. react-ssr

热门文章

  1. fft模板 HDU 1402
  2. Django项目:CRM(客户关系管理系统)--49--40PerfectCRM实现全局账号注册+验证码+页面刷新保留信息
  3. 前端小知识--区分get和post请求
  4. 状态压缩中常用的位运算(DP)
  5. Mysql千万级访问量架构
  6. spring四种依赖注入方式(转)
  7. 前端怎么传一个map给JAVA
  8. LintCode_372 在O(1)时间复杂度删除链表节点
  9. JSP Web第三章整理复习 开发环境搭建
  10. Linux之Shell1