ざっくりん雑記

プログラミングで忘れそうなことをひたすらメモる

PHP - 字句構造(基本的ルール)

PHPにおける字句構造について

 プログラミング言語についての「字句構造」とは、その言語を記述しプログラミングをしていく上での基本的なルールのこと。最も下位レベルでの文法規則と言える。

大文字/小文字の区別

組み込みキーワードは区別しない

 定義するクラスや関数の名前、echo、while、classといった組み込まれているキーワードの名前は、大文字と小文字が区別されない。よって以下の3行のコードは同一の意味を持つ。

echo("hello, php");
ECHO("hello, php");
Echo("hello, php");

変数名は区別する

 一方で、変数名については大文字と小文字を区別する。

$count;
$Count;
$COUNT;

 以上は全て異なる変数を表す。

命令文

   PHPは、命令文の区切りとしてセミコロンを用いる(;)。 if文やwhile文における波括弧({})に包括されたコード群の、閉じ括弧については、セミコロンは不要。 終了タグ直前のコードはセミコロンが不要で省略できる。省略可能であってもややこしかったり、なんだかヒヤヒヤするし、後の可読性も落ちるので必ず付けておくと良さそう。

<?php
if ($name == $admin) {
    echo "Administratorですね"; // このセミコロンは必須
}                               // 閉じ括弧にセミコロンは不要
echo "Hello, PHP!"               // 終了タグ直前のセミコロンは省略可
?>

空白と改行

 PHPにおける空白文字はプログラムに影響を与えない。ので、自由に行頭を揃えたり、インデントするなどして可読性の高いコードを書くことができる。

fruit($apple, $banana, $kiwi, $grape);

// こんな風にも書ける

fruit(
    $apple,
    $banana,
    $kiwi,
    $grape
);

コメント

 適度にコメントを書こう。これはPHPに限った話ではない。

// ✕:よくないコメント

$x = 17; // 変数$xに17を代入する

// ○:よさげなコメント

// &#nnn; 形式のエンティティを文字に変換する
$text = preg_replace('/&#([0-9])+;/e', "chr('\\1')", $text);

シェル形式コメント

 ハッシュ記号(#)があると、そこから文末までがコメントとなる。目立つのでシェル形式コメントは、コードブロックの区切りとして使うのも良い。

if ($name == $admin) {
    # Adminなら
    echo "Administratorですね";
}   

##################
## ○○な関数
##################

$value = $height * $width; # 面積を計算

<?php $level = 4; # レベル4に設定 ?>レベル:<?php echo $level; ?>
レベル:4

 上記の最後の例は、PHPの終了タグでコメント範囲が終わるという点で、便利に使えるといえる。

C++形式コメント

if ($name == $admin) {
    // Adminなら
    echo "Administratorですね";
}   

///////////////////
// ○○な関数
///////////////////

$value = $height * $width; // 面積を計算

<?php $level = 4; // レベル4に設定 ?>レベル:<?php echo $level; ?>
レベル:4

C形式コメント

 シェル形式やC++はコメントが短い場合に便利。より長いコメントの場合はブロック形式のコメントが便利だが、PHPはブロック形式コメントもサポートしている。また、形式はC言語と同じ。

/*   こんな感じでC言語と同じように
    C言語と同様なブロック形式のコメントが
    PHPでも可能です。
    コードの一部を無効にしたい場合にも便利です。
    PHPの終了タグを包括すれば、その中身は無効になります。
    コメントを入れ子にすると、エラーが出るので気をつけよう。
*/

リテラル

 リテラルとは、以下の様なもの。

2016
0xFE
1.23456
"Hello, PHP"
'こんにちは'
true
null

識別子($)

変数名

OKな例
$name
$Count
$MAX_LENGTH
$_underscore
$_int
NGな例
$not number
$=
$50per

関数名

 関数名については、大文字/小文字が区別されない。 以下の関数名が有効。

checkPermission
list_all_admins
deleteName
UPPERCASE_IS_FOR_WIMPS
_hide

クラス名

 クラス名については、大文字/小文字が区別されない。 以下のクラス名が有効。

Person
User
Account

定数

 定数については、ある単純な値を保持する識別子のことで、指定できる値はスカラー値(論理値、整数、浮動小数点数、あるいは文字列)のみである。  定数の値を取得したい場合は、識別子を使用する。定数の値を設定したい場合はdefine()関数を使用する。

define(`MAX_LENGTH`, 100);
echo MAX_LENGTH

予約語(キーワード)

 言語自体に既に予約されており識別子として用いることができないキーワードは以下のリンクを参照。

参考