- プロジェクトマネージャ(大阪)
- Webエンジニア(大阪PHP)
- ★東京・大阪/CS/MG
- Other occupations (64)
-
Development
- Webエンジニア(大阪PHP)
- エンジニアリングマネージャ
- ブリッジSE/オフショア開発
- PM(楽楽シリーズ)
- テックリード(大阪/PHP)
- フロントエンドエンジニア
- ブリッジSE(大阪)
- エンジニアオープンポジション
- Javaエンジニア(楽楽明細)
- Webエンジニア
- Web Engineer
- フロントエンド(リーダー)
- Mobile Engineer
- Android/iOSアプリ
- 社内SE(大阪/セキュリティ)
- 社内SE(大阪/インフラ)
- 社内SE(大阪/クラウド)
- DevOps Engineer
- 品質管理/技術支援チーム
- QAリーダー/マネージャー
- 戦略企画・データマネジメント
- システム企画
- AI/機械学習エンジニア
- データマネジメント・戦略企画
- 社内SE(データエンジニア)
- UIデザイナー(リーダー)
- UI/UXマネージャー
- UIデザイナー
-
Business
- プロジェクトマネージャ(大阪)
- 導入支援/導入コンサルタント
- PdM(楽楽シリーズ)
- 開発マネージャー
- プロダクトセキュリティ
- PMMプロダクトマーケティング
- アシスタントマネージャー
- 経営企画
- データマネジメント・マーケ戦略
- 法務
- 経営企画/事業分析
- 内部監査(業務監査)
- 法人営業
- ITセールス
- 営業企画オープンポジション
- ITセールス(福岡)
- ITセールス(名古屋)
- ITセールス(大阪)
- 法人営業/カスタマーサクセス
- フィールドセールス
- セールスマネージャー
- ビジネスオープン
- ITセールス経験者
- 製品企画/法要件(楽楽明細)
- オンラインマーケティング
- 営業推進リーダー(楽楽精算)
- ブランド企画・ブランディング
- ブランド企画
- マーケティングリーダー
- マーケティング担当
- オフラインマーケティング
- 製品企画/プロダクトマーケ
- CSマーケティング
- 企画マーケティング
- Other
JavaからPHPに乗り換えて感じたこと
はじめに
はじめまして、d_shrと申します。
現在、業務ではPHPを用いて開発を行っています。業務に入る前は大学在学中の研究開発や入社後の新人研修でJavaを使っていました。
在学中にPHPを学習した経験はありましたが、業務で扱うことになると入出力のチェックなど セキュリティの観点には特に注意しなければいけないため、プログラミング言語の細かい仕様まで把握する必要があると思います。
そこで変数の扱いなどにPHP独特のものを感じ、Javaとは違う仕様に戸惑うことがありました。
本記事では、JavaからPHPに転向した際に戸惑ったことを中心に、主にJava経験者から見たPHPの特徴、注意点などをまとめていこうと思います。 PHPの学習を考えている方やPHP初心者の方に少しでも参考になれば幸いです。
目次
PHPを使い始めて戸惑ったこと
業務で実装をしていて1番戸惑ったことは、変数の扱いです。
セキュリティの観点から正しい値が格納されていることをチェックする実装することがありますが、その際にPHPの変数の扱いに戸惑いました。
PHPの変数の扱い
まず、PHPは変数の型がありません。
Javaと比較すると、PHPの大きな特徴であると思います。
変数に型がないPHPでは、1つの変数に数値と文字列を格納することができます。
他にも...
以下のような書き方ができることにも最初はすごく違和感を感じました。
PHP側で解釈してくれるので型の宣言をする必要がなく、記述量が減るメリットはあると思います。
(可読性を考えると、このように書くことはあまりないと思いますが)
しかし、PHPが勝手に型を合わせてしまうため、Javaのような型に厳密な言語を触った後では、変数の扱いに戸惑うことがよくありました。
暗黙的な型変換
暗黙的な型変換とは、PHPが変数の型を勝手に変換してしまうことです。
例えば、以下のような変数の比較。
PHPで数値と文字を比較すると、文字を数値に変換しようとします。
文字列の最初の部分により値が決まり、有効な数値がない場合は0になるため、 このような結果になります。
PHPの仕様通りに変換され意図しない結果が得られることがあるため、 PHPでの条件分岐を作る際には、変数の扱いには注意が必要です。
扱いに注意が必要な例
これらは、型が正しいかどうか厳密な比較を行う演算子"==="を使うことで解決できます。
しかし、厳密な比較を行わない、switch文も注意が必要です。
型に厳密なプログラミング言語の経験がある場合は、 変数の扱いで引っかかりやすいのではないかと思いました。
PHPで正しく変数の扱うためには、変数について仕様をしっかり把握し注意しないといけません。
変数のスコープ
PHPの変数の扱いで戸惑ったことは暗黙的な型変換だけでなく、 変数のスコープでも経験があります。
変数のスコープとは、変数の有効範囲のことです。
PHPでは、関数単位のスコープしかなく、 if文やループ中のみでしか使わないような変数を定義できません。
Javaではif文の中で定義された変数は、if文のブロックの中だけで有効です。
PHPのスコープを把握していなかったときに、以下のようなソースコードを書いたことがあります。
スコープを正しく理解していないと可読性の低いソースコードになってしまうこともあります。
スコープもプログラミング言語で特徴があるので、 各言語ごとに把握しておかないといけないことだと思います。
その他、気になったこと
上記以外で、実装中に疑問に思って調べたことや違和感を感じたことです。
配列の値渡し
Javaのデフォルトは参照渡しですが、PHPのデフォルトは値渡しです。
PHPでも参照渡しはできます。
- 参照渡しの例
参照渡しの例
$array: Array ( [0] => 1 [1] => 5 [2] => 3 )
$copy: Array ( [0] => 1 [1] => 5 [2] => 3 )
まとめ
JavaからPHPを扱うようになって戸惑ったことや違和感についてまとめてみました。
当初はこの違和感に嫌気が差していましたが、今ではPHPに洗脳され慣れてしまいました。
PHPを学び始めた方や、次の新卒で入社される方に参考になればと思います。
また、同じような境遇の方に共感いただければ幸いです。