php7 部分 新特性

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/zyddj123/article/details/82625917

部分php7的新特性


1. NULL合并运算符

由于日常使用中存在大量同时使用三元表达式和 isset()的情况,NULL 合并运算符使得变量存在且值不为NULL, 它就会返回自身的值,否则返回它的第二个操作数。

// 如果 $_GET['name'] 不存在 返回 'eric',否则返回 $_GET['name'] 的值
$name = $_GET['name'] ?? 'eric';
// 其实有点类似于三元运算符
$name = isset($_GET['name']) ? $_GET['name'] : 'eric';

2.太空船操作符(组合比较符)

太空船操作符用于比较两个表达式。当 a b时它分别返回-1、0或1。

// 整型
echo 1 <=> 1; // 0
echo 1 <=> 2; // -1
echo 2 <=> 1; // 1

// 浮点型
echo 1.5 <=> 1.5; // 0
echo 1.5 <=> 2.5; // -1
echo 2.5 <=> 1.5; // 1

// 字符串
echo "a" <=> "a"; // 0
echo "a" <=> "b"; // -1
echo "b" <=> "a"; // 1

3.通过 define() 定义常量数组

define('USER', [
    'eric',
    'zhang',
    'zu'
]);

echo USER[1]; // 输出 "zhang"

4.匿名类

new class 来实例化一个匿名类

interface Logger {
    public function log(string $msg);
}

class Application {
    private $logger;

    public function getLogger(): Logger {
         return $this->logger;
    }

    public function setLogger(Logger $logger) {
         $this->logger = $logger;
    }
}

$app = new Application;
$app->setLogger(new class implements Logger {
    public function log(string $msg) {
        echo $msg;
    }
});

var_dump($app->getLogger());

输出:

object(class@anonymous)#2 (0) {
}

5.Session 选项

session_start()函数可以接收一个数组作为参数,可以覆盖php.ini中session的配置项。
这个特性也引入了一个新的php.ini设置(session.lazy_write),默认情况下设置为 true,意味着>session数据只在发生变化时才写入。
除了常规的会话配置指示项, 还可以在此数组中包含 read_and_close 选项。如果将此选项的值设>置为 TRUE, 那么会话文件会在读取完毕之后马上关闭, 因此,可以在会话数据没有变动的时候,避免不必要的文件锁。

session_start(&#91; 
   'cache_limiter' => 'private', 
   'read_and_close' => true, 
]);

猜你喜欢

转载自blog.csdn.net/zyddj123/article/details/82625917