PHP独学ノート　その2

PHPは大文字/小文字を区別しない。

なので

```
PRINT ‘こんにちは、世界！<br>’;
pRinT ‘こんにちは、皆さん！’;
```
のように記述しても問題なく処理される。
だが、見にくいだけでなくスペリングミスの原因にもなるのでなるべく公式ドキュメントに沿った記述を心がけるべき。



コメントは開発者のための備忘録

コメントはスクリプトの動作には関係しないメモ情報のこと。
大概他人が書いたコードは読みにくいし、自分が書いたコードも後から見るとなにがなんだか思い出せない。

そんな場合に備えてスクリプトの要所要所にコメントを残しておくことは大切。

PHPでは、コメントを記述するために3種類の記法を選択できる。

```
<!——これはコメントです。—->
```
上記はHTMLコメント。PHPはHTML埋め込み型言語なので当然HTML部分ではこのコメントを使用できる。しかしスクリプトブロック（<?php 〜 ?>）内では使用できない。

```
//これはコメントです。
#これはコメントです。
```
単一行のコメント。
「//」または「#」から行末までコメント。
「<?php 〜 ?>」の中でのみ使用可能。
「<!\-\-~\-\->」とは異なり「//」や「#」で書かれたコメントはエンドユーザーには見えないので、スクリプトそのものに関わる（純粋に開発者にとっての）メモ情報を記述する。

現在では「#」を使うことはほとんどない。

なるべく「//」で統一する。

```
/*これらは全てコメントです
そしてこれは複数行のコメントです*/
```
複数行のコメント。
「/\*~\*/」で囲まれたブロック全体をコメントとみなす。

もちろんこれを使って単一行も書ける。
ただし以下のように複数行コメントを入れ子にすることはできない。

```
/*
print ‘いろは’;
/* print ‘にほへと’;*/
print ‘いろは’;
*/
```

こちらもスクリプトブロック内でのみ使用できる。

コメント構文は、既存のコードを無効化する目的で利用することもできる。
これをコメントアウトという。

```
//print ‘こんにちは<be>’;
//print ‘こんにちは’;
```

HTML PHPのコードが混在している場合、以下のコメントアウトも可能。

```
<!——
<?= ‘こんにちは’ ?><br>
<?= ‘こんにちは’ ?> 
—->
```
ただしこの場合はあくまでブラウザー上の表示が無効化されるだけで、PHPのコードは実行される。

「/\*~\*/」では上記に述べたように入れ子にできない為、特定のコードを大きくコメントアウトする際、いちいち「\*/」が含まれていないかを気にしなければならない。
「//」であればそのような制限はない。
「//」で複数行をコメントアウトする場合にもPHPに対応したコードエディターであれば、選択した行をワンタッチでまとめてコメントアウトできる。




変数とは、一言で言えば「データの入れ物」

スクリプトが最終的な結果を導くための「データのやり取り」を表すものであるとするなら、やり取りされる途中経過のデータを一時的に保存しておくのが変数の役割。

変数の宣言

```
<?php
$msg = ‘今仕事の休憩中’;
print $msg;
//結果:今仕事の休憩中
?>
```

「=」は右辺の値を左辺の変数に格納しなさい、という意味。
変数に値を格納することを代入という。
数学の「左辺と右辺が等しい」ことを表すものではない。

（特に、変数に最初に値を代入することを「初期化する」という場合もある。）

用意された変数の中身を確認するには、単に「print 変数名」と表すだけ。
名前を指定して変数の値を取り出すことを「変数を参照する」という場合もある。

```
print $msg;
```

当然だが参照できるのは予め用意された変数のみ。
指定された変数が存在しない場合にはエラーがでる。

PHPのエラーは、重要度に応じてレベルが割り振られている。
具体的に

①Error    :致命的なエラー
②Warning  :警告
③Notice   :注意

Errorは致命的な問題なので処理を中止するが、Warning/Noticeなどはあくまでお知らせなので、そのまま処理を継続する。
だからといってそのまま放置すると将来的な問題、バグの原因ともなるので、Error以外の（広義の）エラーについても全て潰しておく。



変数の命名規則

PHPの命名規則は比較的自由だが、最低限の命名規則は知っておくべき。

①「\$名前」の形式であること。

```
//良い例
//$name, $msg

//悪い例
//name, msg
```

②名前の先頭は任意の文字かアンダースコア（_）であること。

```
//良い例
//$data, $_name

//悪い例
//$123, $1data
```

③名前の2文字目以降は、②に加えて数値を利用しても良い。

```
//良い例
//$name_11, $_test10

//悪い例
//$name-11
```

④大文字/小文字はくべつされる。

```
//$val, $Val
```

コードの中で変数や定数、関数などに付けられた名前のことを総称して識別子という。
②〜④に関しては変数に限らず全ての識別子に共通。

②〜③のルールに従えば日本語を含むほとんどの文字を変数名として利用できる。

```
//$ブタニクβIII
```
はPHPでは妥当な変数名。

だがこのような変数名にメリットはない。

慣例的に、変数名に使う文字は、

英数字、アンダースコア（_）に限定するのが無難。

命令の大文字/小文字は区別しないが、（printやechoなど）変数の大文字/小文字は区別する。

```
//下記は同じもの
//PRINT ‘今②回目の休憩中<br>’;
//pRinT ‘コーヒーが飲みたい’;

//下記は別物
//$total_money
//$Total_Money
```

より良い識別子の為のルール

命令規則ではないが、コードを読みやすくするために以下の点も気にかける。

①名前からデータの内容を類推できる。

```
◯:$score, $birth
×:$m, $n
```

②長すぎない短すぎない

```
◯:$password, $name
×:$pw, $real_name_or_handle_name
```

③ローマ字での名前は避ける

```
◯:$name, $age
×:$namae, $nenrei
```

④見た目に紛らわしくない

```
△:$tel / $Tel(大文字小文字で区別), $user / $usr(1文字違い)
```

⑤記法を統一する

```
△:$mailAddress / $mail_address / $MailAddress
```

⑥予約語は利用しない

```
×:$if, $for
```

②の短すぎないに関してはむやみやたらに省略してはいけないという意味。

「identifier→id」「initialize→init」「temporary→temp」のように慣例的に略語を利用するものはこの限りではない。

もちろん長い識別子が常に良いわけではない。
長すぎる（具体的すぎる）識別子はその冗長さによって他のコードを埋没させてしまう。
そもそもひと目で識別できない名前は理想的な名前とは言えない。