古庄親方の上級試験コラム#010「言語リファレンス > 演算子」

http://php.net/manual/ja/language.operators.php

目次

様々な演算子

型演算子https://www.php.net/manual/ja/language.operators.type.phpは、instanceof を使って「特定のクラス(またはそれを継承したクラス)であるかどうか」を調べる事ができます。インタフェースをimplementsしているか? を調べる事もできますが、一方でTraitについては調べる事ができません。
返す値は真偽値(bool)になります。

実行演算子https://www.php.net/manual/ja/language.operators.execution.phpは「シェルコマンドを実行する」事ができます。
バッククォート演算子とも呼ばれる通り、使われる記号が(シングルクォートではなく)バッククォートである点に気をつけましょう。
挙動は、 shell_exec() 関数と同じ動きです。そのため shell_exec() 関数が無効な場合は実行演算子も無効となります。
返す値は文字列(正確には string|false|null )です。

エラー制御演算子https://www.php.net/manual/ja/language.operators.errorcontrol.phpは「つけた式に限り、エラーメッセージを無視する(出力しないようにする)」事ができます。
また、set_error_handler() で自作のエラーハンドラを設定した場合はエラー制御演算子があってもエラーハンドラが呼び出されます。かつ、PHP8以降 error_reporting() が(0ではなく) E_ERROR | E_CORE_ERROR | E_COMPILE_ERROR | E_USER_ERROR | E_RECOVERABLE_ERROR | E_PARSE を返すようになっています。
そのため、PHP8以降で「set_error_handler()でエラーハンドラを設定している」場合は、エラーハンドラの処理内容によっては「エラー制御演算子が付いていてもエラー処理が行われる」事があるので注意しましょう。

このコラムに関連するコードはこちらになります
https://github.com/php-engineer-examination/php8_column_expert/blob/main/src/010.php

この記事が気に入ったら
いいね または フォローしてね!

よかったらシェアしてね!
  • URLをコピーしました!
  • URLをコピーしました!
目次