連載
» 2017年04月10日 05時00分 公開

知らないと働けないPHPの基本文法/構文と注意点Web業界で働くためのPHP入門(2)(2/2 ページ)

[山口晴広, 齊藤新三(改訂)/山田祥寛(改訂監修),WINGSプロジェクト]
前のページへ 1|2       

エラーが起きたときのポイント

 いままでは正常に実行された場合を見てきました。ですが、エラーが起きたらどうなるでしょうか。hello.phpの「print」命令を間違えて「ptint」などと書いてしまったとしましょう。これを実行すると以下のように表示されます。

図5 わざとエラーを起こした場合

 まずここで確認してもらいたいのは、下記の部分です。

C:\xampp\htdocs\phplesson\chap01\hello.php:8

 ここに、エラーが発生したファイルとその行数が書かれています。hello.phpファイルの上から8行目と分かります。まずはこの情報を手掛かりに、それより前のメッセージを読みつつ、エラーを取り除いていきます。

 「Fatal error」は「PHPのコードを実行したときに発生した致命的なエラー」ということです。

 次に、「Uncaught Error」は「エラー対応していない」という意味です。PHP 7以前では、致命的なエラーが発生した場合、対処方法はなく、できるだけ発生しないようにコーディングするしかありませんでした。ところが、PHP 7以降では、致命的なエラーが発生しても、それを検知して対処できる仕組みが組み込まれました。「Uncaught Error」は、その対処が施されていないという意味です。こちらは現段階では難しい内容ですので、「こんなのがあるんだ」と頭の隅に置いておいてもらうだけで問題ありません。

 その次の「Call to undefined function ptint()」は、「ptint()」という「定義されていない関数を呼び出している」という意味です。「関数」は、この連載中に解説していきますが、現段階では「命令」と思っておいてください。このメッセージを読めば、「ptint()」が記述ミスであることが読み取れます。これを元に、ソースコードを修正して、バグを取り除いていきます。これを「デバッグ」と言います。

PHPの書き方の基本

 ここからは、具体的な文法の解説に入っていきます。今回は、ごくごく基本的な内容です。

PHPにおける文の区切り方

 文の区切りにはセミコロン「;」を使います。また、文の間の空行や空白文字は無視されます。例えば、次のようになります。

<?php
print("line 1.");
print("line 2.");
 
print("line 3.");
?>
リスト2 phplesson/chap02/semicolon.php

 文の区切りには、必ずしも改行を使う必要はなく、次のようにしても文法上は問題ありません。

<?php print("line 1.");print("line 2.");
print("line 3.");
?>

 しかしコードが非常に見づらくなってバグの温床となるだけで、メリットが全くありませんので、こういう書き方はしてはいけません。

文の区切りでセミコロンを省略できる場合

 PHPタグ内の最後の文については、セミコロンを省略できます。chap01/hello.phpを見ると、1つの文ですが省略されていることが分かります。しかし、省略するのは、下記のように1行で書く場合に限定しておきましょう。

<?php … ?>

 つまり、次のように書くのは文法上は正しくても、やってはいけない部類の書き方ということになります

<?php
print("line 1.");
print("line 2.")
?>

 なぜかというと、上記の例の末尾にコードを追加する場合に、セミコロンを忘れてしまう可能性があるためです。わざわざ意図的に省略してもメリットはないので、常にセミコロンを入れるようにしましょう。

 一般的にプログラミングでは、こういった「区切り文字」の入れ忘れは、文法エラーとなるだけではなく、エラーにはならず意図しない動きをすることもあります。そうなると、問題解決に手間取ることになります。常に入れておく癖を付けておけば、そういったことは防げます。

PHPのコメントの書き方

 およそ、どのようなプログラミング言語でも、コードとして実行されない「コメント」を入れるための書き方があります。PHPの場合は3種類の方法があります。

<?php
// 1. 1行コメント
print("Hello World!");  // 行末に置くこともできます
# 2. 1行コメント
print("Hello World!");  # 行末に置くこともできます
/* 3. 複数行コメント
   複数行コメント */
?>
リスト3 phplesson/chap02/comment.php

 1行コメントが2種類ありますが、1番目の方法を使うのが一般的です。本連載でも、この方法を主に使うことにします。

 注意点として、3番目の複数行の方法は「ネスト(入れ子)」になってはいけません。コメントの中にコメントを入れてはいけない、ということです。例えば、以下のような記述です。

/* 3. 複数行コメント
   /* 入れ子のコメント */
   複数行コメント */

 この例では、2行目のコメント終わりのマークでコメントが終わると解釈され、3行目がコメントになりません。

次回は変数や定数、基本的なリテラルの表記法について

 今回はPHPの基本的な書き方、およびエラーの読み方を扱いました。次回からは、変数や定数、基本的なリテラルの表記法など、さらに具体的なPHPの文法について解説していきます。

今回のサンプルコード

 今回のサンプルコードはこちらからダウンロードできます。

■更新履歴

【2014/3/13】初版公開(山口晴広,株式会社イメージズ・アンド・ワーズ)。

【2017/4/10】PHP 7.1含め2017年の情報に合うように対応(齊藤新三/山田祥寛(監修),WINGSプロジェクト)。


前のページへ 1|2       

Copyright © ITmedia, Inc. All Rights Reserved.

RSSについて

アイティメディアIDについて

メールマガジン登録

@ITのメールマガジンは、 もちろん、すべて無料です。ぜひメールマガジンをご購読ください。