DAY 53 WEBサービス部 Lesson19 PHPの「@」とは?

DAY 53 WEBサービス部-Lesson19 / PHPの「@」の意味とは? 【ウェブカツ】

PHP DAY 53 WEBサービス部 Lesson19 PHPの「@」とは?

WEBサービス部 Lesson19 / 1hour

Sep / 30.5hour

Total / 132hour

 

PHPに出てくる、[@]はどんな意味があるのか?

$value = @$cache[$key];

$cacheの前についている「@」。これ、何でしょうか?

CSSだと、@mediaとか@charsetで目にしたことあると思うんですけど、PHPで「@」ってあまり見ませんよね?

初めて見た時に、「なんだこれ?コードミスか?」と思いましたが、この「@」くん、実は立派な役割を持ってます。

 

PHP はエラー制御演算子(@)をサポートしています。
PHP の式の前に付けた場合、 その式により生成されたエラーメッセージは無視されます。

 

つまり、「たとえエラーが出たとしても、無視するようにPHPを制御するよ!」という役割を持っている、ということです。

実際に見ていきましょう。

 

<?php
phpini_set('display_errors', 1); //エラーを画面に表示するようセット

echo $sample;
echo 'test';

?>

notice_php_error定義していない「$sample」という変数を出力しようとしたため、「Undefined Variable」というエラーが画面に表示されています。

 

これを今回の主役「@」くんを用いた場合、どうなるでしょうか。

<?php
phpini_set('display_errors', 1); //エラーを画面に表示するようセット

echo @$sample;
echo 'test';

?>

php_@_sample

このように、Noticeというエラーが無視されて後続の「test」だけが表示されました。

 

・注意すること

ただ、この「@」くんですが下記にある通り相性が悪い方たちもいます。

@演算子は、式 でのみ動作します。基本的なルールは次のようになります。 値を得ることができるものの場合、@ 演算子を前に付けることが可能です。 例えば、変数、関数、include コール、定数等の 前にこの演算子をつけることが可能です。関数またはクラスの定義や if や foreach 等のような 条件構造の前にこの演算子を付けることはできません。

なので、使用する時には必ず「式」かどうかを確認しましょう。

 

 

上記の網掛けの部分(定義部分)は全て下記のサイトより引用してます。

https://www.php.net/manual/ja/language.operators.errorcontrol.php

 

学習は全てウェブカツ!!というプログラミングスクールで学んでいます。

プログラミングスクール「ウェブカツ!!」

大手スクール生徒や現役エンジニアが多数学び直している「実務レベル」に特化した「稼ぐ」ためのプログラミングスクール[…]

DAY 53 WEBサービス部 Lesson19 PHPの「@」とは?
最新情報をチェックしよう!