私が整理したPHP 7.0の主な新特性

7781 ワード

原文:http://php.net/manual/en/migration70.new-features.php
1.スカラーパラメータタイプ宣言
現在は文字列、整数、浮動小数点、ブール型パラメータ声明をサポートしています.以前はクラス名、インターフェース、配列、およびCallableのみをサポートしています.
2つのスタイル:強制変換モード(デフォルト)と厳格モード
<?php
// Coercive mode
function sumOfInts(int ...$ints)
{
    return array_sum($ints);
}

var_dump(sumOfInts(2, '3', 4.1));
2.戻りタイプ宣言
<?php

function arraysSum(array ...$arrays): array
{
    return array_map(function(array $array): int {
        return array_sum($array);
    }, $arrays);
}

print_r(arraysSum([1,2,3], [4,5,6], [7,8,9]));
3.演算子
?? 代わりにissetが必要な場合に使うのは文法飴です.
<?php
// Fetches the value of $_GET['user'] and returns 'nobody'
// if it does not exist.
$username = $_GET['user'] ?? 'nobody';
// This is equivalent to:
$username = isset($_GET['user']) ? $_GET['user'] : 'nobody';

// Coalescing can be chained: this will return the first
// defined value out of $_GET['user'], $_POST['user'], and
// 'nobody'.
$username = $_GET['user'] ?? $_POST['user'] ?? 'nobody';
4.<=>比較演算子
は、2つの表式の値の大きさを見て、3つの関係を返します.
<?php
// 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
5.defineは配列の種類を定義する値をサポートします.
php 5.6はすでにCONST文法定義配列類の定数をサポートしており、PHP 7ではdefine文法をサポートしています.
<?php
define('ANIMALS', [
    'dog',
    'cat',
    'bird'
]);

echo ANIMALS[1]; // outputs "cat"
6.匿名クラス
<?php
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());
7.整除関数intdivを追加しました.