• 喜欢前端以及PHP的朋友们可以加PHP同好会QQ群 点击加入qq群
  • 最近在写一个项目---"小A微信托管平台",大家可以去帮忙测试一下!功能在不断完善中,敬请关注!点击进入
  • 本站使用了PHP8.1与HTTP2.0协议,速度简直超级快有木有?

从PHP5.3到PHP7

后端 Mr.Adam 8年前 (2017-04-13) 2825次浏览 已收录 0个评论

从 PHP5.3 到 PHP7

从 PHP5.3 到 PHP7

php5.3 到 php7 的新增语法,直接上代码

php5.3 的新特性

5.3 添加了新的三元运算写法与匿名函数

$a = null;
$a = $a?$a:1;
echo $a;

$a = null;
$a = $a?:1;
echo $a;

//匿名函数
$x = function(){
    echo "xx";
};
$x();

$arr = array(1,3,5,7);

function incr($arr){
    foreach($arr as $k=>$v){
        $arr[$k] = $v += 1;
    }
    return $arr;
}
print_r(incr($arr));
//将操作交给一个匿名函数

function incr1($arr,$callback){
    foreach($arr as $k=>$v){
        $arr[$k] = $callback($v);
    }
    return $arr;
}

print_r(incr1($arr,function($a){return $a*2;}));

php5.4

php5.4 允许数组使用中括号语法,函数可以当做变量,开放短标签支持,开放 trait 实现一个类继承自多个父类

//函数可以当做一个变量
function getAll(){
    return ["a","b","c","d"];
}
//5.3 之前需要先赋给一个变量
$a = getAll();
echo $a[3];

//5.4 之后可以直接取
echo getAll()[3];

//对象也可以不用赋给一个变量而调用该对象的方法 该对象用完即会被销毁
class Doc{
    public function bark(){
        echo "123";
    }
}

(new Doc())->bark();

//开启短标签支持
?>

<?php
$title = "OK";
$content = "好的";
?>
<!doctype html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title><?=$title;?></title>
</head>
<body>
<?=$content;?>
</body>
</html>

<?php
//5.4 添加了二进制的支持
echo 0b11111111; //255

//5.4 允许 trait '萃取'
/*
    php 不允许一个子类继承多个父类
    使用 trait 可以模拟继承多个父类
*/
trait dog{
    public function bark(){
        echo "bark";
    }
}
trait bird{
    public function fly(){
        echo "fly";
    }
}
class Super{
    use dog , bird;
}
//Super 继承了 dog 与 bird2 个对象
(new Super())->bark();
(new Super())->fly();

php5.5

php5.5 之后 empty()函数可以传入一个表达式或一个函数,开放 yield 使函数执行与循环同时进行

// 5.5 以前 empty() 不能传入一个表达式  5.5 以后可以
$a = 3;
var_dump(empty($a-3));

function em(){
    return array();
}

var_dump(empty(em()));

//开放 yield 可以省一个变量加一个循环步骤
function getAll1(){
    for($i=1;$i<6;$i++){
        yield $i;
    }
}
foreach(getAll1() as $v){
    echo $v."<br>";
}

php5.6

5.6 之前 const 是类内常量,现在可以写在类外,并且可以定义为数组,增加函数可变参数与不定项参数的写法,增加 N 次方操作符

/**
 * 5.6 新特性
 * 之前 const 是类内常量,
 * 现在可以将 const 写在类外
 * 而且常量可以定义为数组
 */
const char = ["x","y","z"];
echo char[1];


//可变参数
//写这么一个求和函数
//如果求和参数个数是不确定的,
//5.6 可以允许

//之前可以这么写
function sum1($a,$b){
    $param = func_get_args();
    print_r($param);
    $a = 0;
    foreach($param as $v){
        $a += $v;
    }
    return $a;
}
echo sum1(1,2,3,4,5,6);//可以实现

//5.6 之后可以这么写
function sum2($a,$b,...$c){
    print_r($c);
}
sum2(1,2,3,4,5,6); //打印 3456

//不定项参数
function test($a ,$b ,$c ,$d){
    echo $a,$b,$c,$d,"<br>";
}
//如果第一个参数是确定的,后面的参数在一个数组中,那么可以这么给传进去
$num = [2,3,4];
$a = 1;
test($a,...$num); //输出 1234

//增加**  求一个数字的 n 次方
echo 2**3; //8
echo 3**3; //27

php7

<?php
//php7 的新特性
//以前这么写
$page = isset($_GET['page'])?$_GET['page']:1;

//php7 可以这么写 ??
$page = $_GET['page']??1;
//判断$_GET['page']是否为 NULL 如果为 NULL 则取 1;
echo $page;//输出 1

//php 是一种弱类型语言
//php7 也允许限制变量类型了

function add(int $x,int $y):int{
    return $x+$y;
}
echo add(3,4);//输出 7

echo add(3,4.9);//还是输出 7 在这里会被自动 floor 处理

//php7 支持匿名类
echo (new (class {
    public $leg = 4;
}))->leg;//输出 4

?>

小 A 空间 , 版权所有丨如未注明转载 , 均为原创丨本网站采用BY-NC-SA协议进行授权 , 转载请注明从 PHP5.3 到 PHP7
喜欢 (1)
发表我的评论
取消评论
表情 贴图 加粗 删除线 居中 斜体 签到

Hi,您需要填写昵称和邮箱!

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址