PHP5.4~PHP7的新特性
官方文档:http://php.net
在bing.com中搜索PHP new feature
PHP5.5
生成器
Yield:在for循环中使用,将循环里面的内容输出出来,不会终止代码继续执行
代码:
//在函数中使用return可以将值返回出来
// function aa(){
// return 11;
// }
//使用php5.4可以生成数据
function text(){
for($i=1;$i<5;$i++){
echo “当前的是第”.$i.”次循环”;
yield $i; //将循环里面的内容输出出来,不会终止代码继续执行
}
}
$i=text();
var_dump($i); //object(Generator)#1 (0) { }
echo “<br>”;
//通过循环将内容输出出来
foreach($i as $value){
echo $value.”<br>”;
}
Finally
将代码继续执行完毕,即使上面有报错的情况
代码:
//finally关键字的使用
try{
throw new Exception(“这里出现了异常”);
}catch(Exception $e){ //捕获出现的异常
var_dump($e);
//在处理异常的的时候再次出现异常
throw new Exception(“这里又出现了异常”);
}finally{
echo “这是finally执行的代码”;
}
echo “代码执行到这里”;
Foreach和list
代码:
<?php
//创建一个二维数组
$arr=[
[1,2],
[3,4],
[5,6]
];
//使用foreach将二维数组中的内容全部拿出来
foreach($arr as $value){
echo $value[0].”<br>”;
echo $value[1].”<br>”;
}
//使用foreach和list配合使用
foreach($arr as list($a,$b)){
echo $a.”<br>”;
echo $b.”<br>”;
}
Empty
可以在empty中存放表达式来做判断
代码:
<?php
//empty()函数的升级,empty()函数可以放任何合法的表达式
var_dump(empty(1+2)); //false
var_dump(empty(null)); //ture
var_dump(empty(”)); //ture
php中数组和字符串的简化使用方法
在php中使用
<?php
echo [1,2,3,4,5,6][3].”\r\n”;
echo “iamaboy”[1];
echo “this is a string”[-1];//下表使用负数的时候获取的是嘴一个往前数
echo “this is a string”[-2];
password_hash
用于给内容加密
代码:
<?php
//以往加密方式md5加密方式,相同的内容加密之后加密数据是一样的
//password_hash,不能反解密,并且每次加密的结果都不一样
//password_hash加密方式有好多种,推荐使用的是PASSWORD_BCRYPT
$num=123456;
//第一个参数是需要加密的内容,第二个参数是加密的方式
$pass=password_hash($num,PASSWORD_BCRYPT);
echo $pass;
//password_verify()验证加密的内容
$num2=123456;
$result=password_verify($num2,$pass);
var_dump($result);
const定义常量
不定参数otherParams
代码
<?php
//在php可以定义otherParams来确定多个实参
function text($a,$b,…$otherParams){
var_dump($a);
var_dump($b);
var_dump($otherParams);
}
text(1,2);
echo “<br>”;
text(1,2,3);
echo “<br>”;
text(1,2,3,4,5,6,7,8,9,10);
效果
php中求次方
写出一个数值的次方可以使用两个乘号加上多少次方的值
namespace命名空间
function形参的定义
代码
<?php
function text(string $username,int $age) : string
{
var_dump($username);
var_dump($age);
}
text(‘zhangsan’,”22″);
// text(22,”zhangsan”);
isset和三元运算符的简写
php7
太空船
当两个数字进行比较大于则返回1 等于返回0 小于返回-1
const定数组
数组里面的内容要求,必须是字符串或者数字类型
匿名函数和匿名类
<?php
//使用 define定义数组
define(‘NUMS’,[1,2]);
var_dump(NUMS);
//定义一个匿名函数,将这个匿名函数复制给变量
$func=function(){
echo “这是匿名函数”;
};
//调用匿名函数
$func();
//顶一个匿名类
$bb=new class{
public $name=”zhangsan”;
public function __construct(){
echo “这是匿名类”;
}
};
//调用类里面的内容
var_dump($bb->name);
字符串转换
小明=> 5c0f 660e
<?php
//转码必须加上\u unicode 必须加上{uniclde编码}
echo “\u{5c0f}”; //小
echo “\u{660e}”; //明
函数调用类里面的方法
$aa=55;
//使用use可以当成形参使用
$bb=function() use($aa)
{
echo $aa;
//可以直接拿到类里面的方法
$this->Hi();
};
// $bb();
//定义一个类
class Hello{
public function Hi(){
echo “hello~~”;
}
}
//使用函数调用类里面的方法
//先实例化类
$he=new Hello();
//在使用函数调用类里面的方法是不能在单独实例化函数
$bb->call($he);
不同的名空间调用类
数组的赋值
函数的参数(数组)
类里面的常量可以不是public公有的
多异常抛出
可以抓取多个异常类
<?php
class my extends Exception{};
class he extends Exception{};
class she extends Exception{};
try{
throw new my(“我的错误”);
throw new she(“我的错误”);
//可以在下面抓取异常的内容中设置任意一个异常
}catch(my | she | he $e){
var_dump($e);
}