システム構築で外部ライブラリを利用することになり、PHPMailerを読み込んでメール送信する仕組みをプログラミング中。テスト送信でエラーが発生したため、どの部分が悪いのかソース内を調査していくとどんどん関連しているファイルを進んで行く内にライブラリまでたどり着いた。

ライブラリが悪いわけではないと思うし、おそらく渡している引数の中身なんだろうなとか思いつつせっかくライブラリの中まで入ってしまったので勉強のために覗いているとちょっと気になる書き方が。

頭に@「アットマーク」が付いている関数である。このPHPMailerでは@mail(***, ***)みたいなものがあった。

関数に@を頭につけると何かあるのか?これはこれで一つの関数という意味なのか?ちょっと気になって調べてみるとこれはこれで意味があったそうな。

これは、PHPのマニュアルにありました。

エラー制御演算子
PHP はエラー制御演算子(@)をサポートしています。 PHP の式の前に付けた場合、 その式により生成されたエラーメッセージは無視されます。
https://www.php.net/manual/ja/language.operators.errorcontrol.php

ということだそうだ。

つまり、この式のエラーによって吐き出されるエラーやログなどは避けるみたいな。確かにライブラリで不具合があって余計なエラー文が表示するのはライブラリを利用する人にとってはそれを抑えるためのまた余計なプログラムが必要になるわけで、ライブラリとして考えた作者としてのちょっとした配慮ともいえるのだろうか?

まぁ上手く動作しなかったときのバグ箇所探すときはまた大変になるかもしれないが、必要ないエラー表示を制御するときには使える演算子ということをまた勉強させていただきました。