(jp) =
# is_countable
RFC
PHP 7.2 では、数えられないオブジェクトを数えるときの警告が追加されました。 の is_countable
関数は、この警告を防ぐのに役立ちます。
$count = is_countable($variable) ? count($variable) : null;
# array_key_first
と array_key_last
RFC
これら 2 つの関数は、基本的にその名前が示すとおりに機能します。
$array = [
'a' => '…',
'b' => '…',
'c' => '…',
];
array_key_first($array);
array_key_last($array);
元のRFCも提案しました array_value_first
と array_value_last
、しかし、これらは過半数の人々によって反対票を投じられました。
別のアイデア array_first
と array_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
フルネームを出力するために使用される整数とブール値の場合、次のように変更されました int
と bool
、コード内の型ヒントと一致するようにします。
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
大文字と小文字を区別しない定数が許可されている、いくつかの特殊なケースがありました。 これらは廃止されました。
# 同一サイトのクッキー RFC
この変更は、新しいパラメーターを追加するだけでなく、 setcookie
、 setrawcookie
と session_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_REQUIRED
とFILTER_FLAG_HOST_REQUIRED
フラグ -
pdo_odbc.db2_instance_name
php.ini ディレクティブ
各非推奨の完全な説明については、RFC を参照してください。