コラム

元JavaエンジニアがPHPを書くようになって驚いたこと3選

2016-02-01

RM STAFF

WRITER:

RM STAFF

こんにちは!サーバサイドエンジニアのSaoriです!
私はもともとJavaエンジニアでしたが、仕事でPHPを書くようになると違うことがたくさん。
Javeしか知らなかった私がPHPを書いて驚いたことを皆さんにぜひご紹介したいと思います。

型を気にしないで書ける

とにかく最初に驚いたのはこれです。 PHPの実装がらみのサイトとか見ているとたまに

$a = 10;
// (何か処理)
$a = ‘hoge’;

といった形で、今まで数字入れてところに文字列を入れたりしているのに出くわします。
「なにこれ、怖い。」と思っていた時期が私にもありました。
※実際の仕事ではこんな実装はしていません。w

0 は if にそのまま突っ込むと false

PHP始めたてのころに「変数をそのまま if 文に突っ込むと値が入っていたらtrueが返ってくる」と聞いて

$num = 0;
if ($num) {
echo ‘true’;
} else {
echo ‘false’;
}

と実装してはまったことが恥ずかしながらあります。

亜種に

$num = 0;
if (empty($num)) {
echo ‘true’;
} else {
echo ‘false’;
}

としたときに falseが返ってくるというのもあります。

その他にも配列が空のとき、変数が未定義のときと何かと最初のうちははまりポイントがあるので、
PHPの型比較表 をぜひ参照してみてください。

シングルクオートで文字列が囲める、ダブルクオートでも囲める

Javaでは文字リテラルはシングルクオート、文字列リテラルはダブルクオートとなっているので、
「文字列」を扱うには基本的にはダブルクオートで囲みます。
PHPの場合、文字列を扱う場合は基本的にはシングルクオート…かと思いきや
ダブルクオートで囲っている実装もさ散見されます。
ダブルクオートで文字を囲った場合、特殊なエスケープされた文字や変数内の文字を解釈してくれます。

例えば

$today = ‘今日’;
echo ‘こんにちは \n {$today}も寒いです’;

は「こんにちは \n {$today}も寒いです」が返ってくるのに対し

$today = ‘今日’;
echo “こんにちは \n {$today}も寒いです”;

は「こんにちは(改行) 今日も寒いです」が返ってきます。
なお、改行を含む文字列を指定するためにheredoc構文とnowdoc構文というものもあります(nowdoc構文はPHP5.3.0以降対応)。
heredoc構文はダブルクオートで囲まれた文字列と同じように変数内の文字列も解釈してくれます。
対してnowdoc構文はシングルクオートで囲まれた文字列と同じ挙動になります。

例えばnowdoc構文

$today = ‘今日’;
echo <<<'GREET' こんにちは {$today}も寒いです GREET; は「こんにちは(改行){$today}も寒いです」が返ってくるのに対し、heredoc構文 $today = '今日'; echo <<ドキュメントを参考にするとよいでしょう。

まとめ

今までJavaエンジニアだった人がPHPを触り始めると驚くべきことがたくさんあります。
ただ、どのようなものでも公式のドキュメントを参照すると見えてくることがあります。
PHPだけに限らず、公式ドキュメントをうまく活用して、どんどん新しいことにチャレンジしていきましょう。

リッチメディアではサーバーサイドはPHP以外も取り扱っているので、
PHPのエンジニアでもそうでなくてもどんどん新しいことにチャレンジしていくエンジニアが多くいます。
リッチメディアではプログラミングが好きで、
チーム全体でサービスを開発していきたいという想いを持ったエンジニアのみなさん!
一緒に最高の作品を創り上げていきませんか?

 

【関連記事】

最低限知っておきたいER図の書き方
キュレーションメディアを支える技術[サーバーサイド編]
WordPress以外のCMSも使ってみよう!Drupalとは?