© 2023 MNET LLC. All Rights Reserved.

僕的PHP備忘録:エラーは友達怖くない。その1

山下 生真

僕的PHP備忘録第6弾。プログラミングをしていると必ずと言っていい程付き合っていくことになる「エラー」。今回はエラーの種類やケースを知る事でどんなエラーが出ても「今どんなエラーを伝えようとしているのか?」を理解し、エラー箇所、解決が出来ない場合は検索の速度を上げることによってスムーズなプログラミングライフを送れるようにしましょう!

エラーとは

どんだけ慎重にコーディングをしていてもエラーは100%といっても過言ではないほど発生します。
エラーと上手く付き合うことで今後、強強エンジニアになるか弱弱エンジニアになるか変わってきます。

エラーは主に次の3つに分類されます。

・パースエラー(シンタックスエラー):PHPの文法を間違っている場合に発生するエラー
・実行時のエラー:実行が中断されるエラー(Fatal Errorなど)
・警告・注意 実行は継続するが警告があるエラー(WarningやNoticeなど)

エラーの種類とエラー定数

エラーは、重要度の高い順に、E_PARSE > E_ERROR > E_WARNING > E_NOTICE > E_DEPRECATED > E_STRICTがあり、その他にユーザエラーと呼ばれるエラーやプログラムの実行が終了しない警告程度のエラーのE_WARNINGやE_NOTICEがあります。

E_PERSE

このエラーはPHP上の文法を間違っている場合にでるエラーです。

末尾のカッコやセミコロンを付け忘れたりした際にでるエラーですので一番頻出するエラーと思います。
このエラーは対象のPHPファイルを読み込んだ段階で発生し、そのファイルは実行されずに終了します。

<?php
  echo 'こんにちは';

  $a = 1;
  if($a == 1) { //閉じカッコがない
    echo '$aに1が代入されています';

 echo 'さようなら';
?>

上のプログラムを実行すると

Parse error: syntax error, unexpected '{' in index.php on line 6

の形のエラーが吐き出されます。

見方としてはindex.phpというファイルの6行目付近(on line 6)で何らかの文法エラーが発生してるよと見ます。
しかもこのエラーが出た場合は6行目以前のコードも実行されないため直ちに正しい文法に修正しましょう。

E_ERROR

このエラーは実行時に発生した致命的なエラーとなります。

例えば定義されていない関数や変数を呼び出したりするとこのエラーが吐き出されます。

<?php

  echo '同じクラスを宣言する';

  class example {}
  class example {}

  echo 'プログラムを終了します';
?>

上のプログラムを実行すると

同じクラスを宣言する

Fatal error: Cannot redeclare class example index.php on line 6

見方はファイル名(index.php)と行数(on line 6)は同じですね。
致命的なエラー(Fatal error)が発生していて内容は宣言したクラスを再度宣言することはできないよ(Cannot redeclare class)という意味になります。

また、E_PERSEと違うのはエラーが発生する箇所までのプログラムは実行されるという点です。

まとめ

エラーをしっかりと理解するのと理解しないのでが今後のプログラミングライフを過ごすのに大きな違いが出てきます。
初めは呪文のように感じるエラー文ですが基本的に要点を抑えているのは一部分になるのでいち早くエラーを伝えている箇所を見つけ快適なコーディングライフを送りましょう

参考資料:パーフェクト PHP 著:小川 雄大、柄沢 宗太郎、橋口 誠

山下 生真

役員

建築家を志し京都の大学を卒業。様々な業種を経て、IT業界に心惹かれ、一心発起し、プログラミングスクールに業務の傍ら通う。趣味のYouTubeの動画編集・撮影活動で現CEOと出会う。幼少期からの夢であった”魔法使いになってみんなの役に立つ”実現の為、IT技術を駆使し、世の中の役に立つことを目標に起業。座右の銘は”野心・向上心”。

HOT TOPICS
人気の記事

全て見る