「PHPは@をつければエラーが出なくなる」のなぜ?なに?を掘り下げる by きんじょうひでき

PHPカンファレンス関西2024
レギュラートーク(15分)

「PHPは@をつければエラーが出なくなる」のなぜ?なに?を掘り下げる

o0h_ きんじょうひでき o0h_
8

ゆるふわ言語としてお馴染みのPHPを利用中の皆さん!
我々には、エラー制御演算子@というものがあります。
──コイツの挙動について、深く考えてみた事はありますか?

例えば、次のコードを実行すると、何個のエラーが出力されるでしょうか。

<?php
var_dump(@$v1->p);
@var_dump($v2->p);
var_dump($v3->p);

@min($v4);
min(@$v5);
min($v6);

$ar1[] = $v7;
@$ar2[] = $v8;
$ar3[] = @$v9;

正解はPHP8で3個、PHP7で6個です!

@を付けた場合の制御の対象はどこまでなのか、制御された場合にどういう挙動の変化があるのか?
PHP8での変更はどんなものなのか?
このトークでは、php-srcとASTの世界から「@完全に理解した」を目指します。