te16

PHP 7.3 の新機能 – Stitcher.io

(jp) =

# is_countable RFC

PHP 7.2 では、数えられないオブジェクトを数えるときの警告が追加されました。 の is_countable 関数は、この警告を防ぐのに役立ちます。

$count = is_countable($variable) ? count($variable) : null;

# array_key_firstarray_key_last RFC

これら 2 つの関数は、基本的にその名前が示すとおりに機能します。

$array = [
    'a' => '…',
    'b' => '…',
    'c' => '…',
];

array_key_first($array); 
array_key_last($array); 

元のRFCも提案しました array_value_firstarray_value_last、しかし、これらは過半数の人々によって反対票を投じられました。

別のアイデア array_firstarray_last タプルを返すことが提案されました [$key => $value]、しかし、意見はまちまちでした。 今のところ、配列の最初と最後のキーを取得する関数は 2 つしかありません。

# 柔軟なヒアドキュメント構文 RFC

ヒアドキュメントは、過去にインデントの癖がありましたが、より大きな文字列の場合に便利なツールになる可能性があります。



$query = <<<SQL
SELECT * 
FROM `table`
WHERE `column` = true;
SQL;



$query = <<<SQL
    SELECT * 
    FROM `table`
    WHERE `column` = true;
    SQL;

これは、既にネストされたコンテキストで Heredoc を使用している場合に特に便利です。

終了マーカーの前の空白は、すべての行で無視されます。

重要な注意: この変更により、既存のヒアドキュメントの一部は、本文で同じ終了マーカーを使用している場合に破損する可能性があります。

$str = <<<FOO
abcdefg
    FOO
FOO;

# 関数呼び出しの末尾のカンマ RFC

配列ですでに可能だったことは、関数呼び出しでも実行できるようになりました。 関数定義ではできないことに注意してください!

$compacted = compact(
    'posts',
    'units',
);

# 型エラー報告の改善

TypeErrors フルネームを出力するために使用される整数とブール値の場合、次のように変更されました intbool、コード内の型ヒントと一致するようにします。

Argument 1 passed to foo() must be of the type int/bool

PHP 7.2 との比較:

Argument 1 passed to foo() must be of the type 
integer/boolean

# JSON エラーがスローされる可能性があります RFC

以前は、JSON 解析エラーはデバッグが面倒でした。 JSON 関数は、解析エラーで例外をスローする追加オプションを受け入れるようになりました。 この変更により、明らかに新しい例外が追加されます。 JsonException.

json_encode($data, JSON_THROW_ON_ERROR);

json_decode("invalid json", null, 512, JSON_THROW_ON_ERROR);

この機能は新しく追加されたオプションでのみ使用できますが、将来のバージョンでデフォルトの動作になる可能性があります。

# list 参照代入 RFC

list() とその省略形 [] 構文が参照をサポートするようになりました。

$array = [1, 2];

list($a, &$b) = $array;

$b = 3;

# の未定義変数 compact RFC

に渡される未定義の変数 compact 以前は無視されていましたが、通知で報告されます。

$a = 'foo';

compact('a', 'b'); 

# 大文字と小文字を区別しない定数 RFC

大文字と小文字を区別しない定数が許可されている、いくつかの特殊なケースがありました。 これらは廃止されました。

この変更は、新しいパラメーターを追加するだけでなく、 setcookiesetrawcookiesession_set_cookie_params 関数は非破壊的な方法で動作します。

すでに巨大な関数にパラメーターを 1 つ追加する代わりに、後方互換性を維持しながら、一連のオプションをサポートするようになりました。 例:

bool setcookie(
    string $name 
    [, string $value = "" 
    [, int $expire = 0 
    [, string $path = "" 
    [, string $domain = "" 
    [, bool $secure = false 
    [, bool $httponly = false ]]]]]] 
)

bool setcookie ( 
    string $name 
    [, string $value = "" 
    [, int $expire = 0 
    [, array $options ]]] 
)

// Both ways work.

# PCRE2 移行 RFC

PCRE — 「Perl Compatible Regular Expressions」の略 — が v2 に更新されました。

移行では、いくつかの重大な変更がありますが、最大限の下位互換性に重点が置かれました。 それらについて知るには、必ず RFC を読んでください。

# 文字列検索関数 README

非文字列ニードルを文字列検索関数に渡すことはできなくなりました。 影響を受ける機能は次のとおりです。

strpos()
strrpos()
stripos()
strripos()
strstr()
strchr()
strrchr()
stristr()

# MBString の更新 README

MBString 複雑な文字列を処理する PHP の方法です。 このモジュールは、このバージョンの PHP でいくつかの更新を受け取りました。 ここでそれについて読むことができます。

# いくつかの非推奨 RFC

いくつかの小さなことが廃止されました。これにより、コードにエラーが表示される可能性があります。

  • 文書化されていない mbstring 関数エイリアス
  • 整数針による文字列検索機能
  • fgetss() 機能と string.strip_tags フィルター
  • 自立型の定義 assert() 関数
  • FILTER_FLAG_SCHEME_REQUIREDFILTER_FLAG_HOST_REQUIRED フラグ
  • pdo_odbc.db2_instance_name php.ini ディレクティブ

各非推奨の完全な説明については、RFC を参照してください。

次の投稿
フィロデンドロン インペリアル レッド vs. ロホ コンゴ
前の投稿
ベトナムで最も人口の多い 3 つの都市を発見する

ノート:

AZ: 動物の世界、ペット、ペット、野生の自然に関するカテゴリー記事…
SP:スポーツカテゴリー。
New vs Ne: ニュースコラム。
Te: テクノロジー カテゴリ。
Gt:エンターテインメントカテゴリー。
Bt: 占い、星占い、超常現象、超常現象。
Ta:人生コラム。