これまでJavaを使って10年近く業務を行ってきた。が、ここに来てPHPを学ぼうと思う。いつぞやも書いたかもしれないが、市場にはまだまだPHPの案件は多く、覚えておいて損はない言語だと思われるからだ。とはいえ、学んだこと全てを記述するのはちょっと冗長が過ぎるので、Javaと比較して違うと感じたところのみを羅列する。
だがその前に、別の言語を学ぶ際に気をつけている点を列挙する。
- 宣言と演算子
- 制御文
- 関数(メソッド)
1度はなんかしらの言語を学んだ事があれば、この3つさえ覚えれば明日から新しい言語で書くことはできる。ただし、その言語に最適化されたコーディングはまだできない。
PHPの初心者向けの本とか選ぶと、「for文とはこんな意味です。」みたいなところから始まってめんどくさいんで、この本を買った。これもちょっとは「for文とは」みたいなの書いてあるけど始めてのPHPみたいな本に比べると少ないんでみやすい、かな?
宣言
変数宣言
PHPは静的型付け言語なので、変数宣言には$を使うだけでいい。
$name = "hoge fuga";
$age = 16;
文字列はシングルクォートとダブルクォートのどちらでもよい。ただし挙動が違うので注意が必要。
$age = 16; echo "$age years old."; // $ageは解釈されて 16 years old. echo '$age years old.'; // $ageはそのままで $age years old.
配列の宣言
いろいろ方法があるよう。
$colors = array('green', 'black', 'blue'); echo $colors[0]; // green $animals[] = 'cat'; $animals[] = 'dog'; $animals[] = 'rat'; echo $animals[2]; // rat
2次元配列もarrayの入れ子で記述可能(同様に3次元も4次元も)。
$ninePuzzle = array(array(1, 3, 5), array(4, 8, 7), array(2, 9, 6));
連想配列
Javascriptにもあるが、Javaで言うところのMapが近い。Key-Valueでの保持。
$fruitsColor = array(
'apple' => 'red',
'peach' => 'pink',
'banana' => 'yellow',
);
「=>」とか実にめんどくさいのである。
$fruitsColor['grape'] = 'purple';
こちらのほうが簡易。
ヒアドキュメント
文字列を記述したままに出力してくれる。
$message = <<<_ENDMSG
Hello world.
-- Hello PHP.
_ENDMSG
こうした場合、改行や2行目のインデントなんかをそのまま出力可能。テンプレートがWYSIWYGになる。
演算子
算術演算子
Javaと同じ(四則演算+剰余)なんでパス。
代入演算子
+=みたいなやつ。1つだけ追加。
- .=
- 文字列を連結して返す
論理演算子
- and
- &&よりは優先度の低い論理積
- or
- ||よりは優先度の低い論理和。or dieも使えたりする。
- xor
- 排他的論理和。意外と使う。例えば、自宅か携帯番号かどちらかあれば良い場合とか。
変数修飾子
- global
- 諸悪の根源。使わない。
- static
- Javaと同じ。
- const
- 定数。再代入不可。