PHP5.0到PHP7常用语法糖整理

    整理一下从PHP5开始的一些语法糖,也就是PHP版本的一些差异改变。

   数据类型(Boolean,String,Array)

    1.Boolean:空对象在4.0以后都视为true。

    2.String:内部结构类似array,可以像array一样访问

  •     $str = 'abcde';
        echo $str[1];  //b
        echo $str{2};  //c

   全局变量

  • SERVER_ADDR IP地址 127.0.0.1
  • SERVER_NAME 主机名 localhost
  • SERVER_SOFTWARE 服务器类型 nginx
  • REMOTE_ADDR 客户端IP. 127.0.0.1 
  • $_FILES['file']['name'] 图片原名称
  • $_FILES['file']['type'] 图片MIME类型
  • $_FILES['file']['size'] 图片大小
  • $_FILES['file']['tmp_name'] 服务器端临时名称

    常量

    5.3之后后可以使用const来定义常量  

const DEBUG = true;

 

运算符

<=> 比较运算符,7.0 之后支持

就是看两个表达式值的大小,三种关系: = 返回0、< 返回-1、 > 返回 1

// Integers
echo 1 <=> 1; // 0
echo 1 <=> 2; // -1
echo 2 <=> 1; // 1
// Floats
echo 1.5 <=> 1.5; // 0
echo 1.5 <=> 2.5; // -1
echo 2.5 <=> 1.5; // 1
// Strings
echo "a" <=> "a"; // 0
echo "a" <=> "b"; // -1
echo "b" <=> "a"; // 1

 空接操作符:

?? 空合并运算符 PHP7特性。

$name = $_POST['name'] ?? '';  //如果前面的值不为null,则返回本身,否则返回后面的值
$name = $_POST['name'] ?: ''; 如果前面的值不为null,则返回本身,否则返回后面的值

 流程控制:goto 5.3版本以上有效

操作符可以用来跳转到程序中的另一位置。该目标位置可以用目标名称加上冒号来标记,而跳转指令是 goto 之后接上目标位置的标记。PHP 中的 goto 有一定限制,目标位置只能位于同一个文件和作用域,也就是说无法跳出一个函数或类方法,也无法跳入到另一个函数。也无法跳入到任何循环或者 switch 结构中。可以跳出循环或者 switch,通常的用法是用 goto 代替多层的 break。

goto next;
echo 'abc';

next:
echo 'def';

//输出 def

函数

匿名函数:Anonymous functions 5.3版本有效

从父作用域中继承变量怎么办

//这里定义一个默认的输出名字的方式
$args = 'My name is ';

//使用 use() 来引用父级的变量,最后输出结果与上边一致 
$test = function($name='he') use($args ) {
    echo $tpl.$name;
};
$test();

需要注意的是,闭包函数的父作用域,是定义它的作用域,不是调用的作用域

类和对象

多继承实现方式trait:

1.trait 和 class 是相似的概念,但不能被实例化 
2.一个类可以使用多个trait,优先级是 class > trait > 父类继承的方法 
3.使用insteadof 来解决 tarit 冲突 
4.使用as,来修改方法的访问控制 
5.在trait中也可以使用tarit。和在class中用法一致

trait A {
    public function say(){
        echo 'trait  A';
    }
}

trait B {
    public function say(){
        echo 'trait B';
    }

    public function walk(){
        echo 'walk B';
    }
}

class Person {
    use A, B{
        B :: say insteadof A; // 使用B的say方法代替了A的say方法
        walk as protected;    // 将walk 设置为受保护的
    }


}

$obj = new Person;
$obj->say();  // echo trait A;
$obj->walk(); // 提示不能访问一个受保护的方法

 

转载于:https://my.oschina.net/Shinsg/blog/1556633

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值