普通にPHPのこと書いても面白くないので、
Java出身(半年くらいJavaはお仕事しました)
の人間がPHPのことを学んだらどうなるか。というのを書いてみます。
###1.前提
Javaの経歴 詳細設計~単体テストまで 大体半年くらい
Java7~8をちょこっと。
PHPの経歴 Paizaとかprogateで遊んでたくらい。
今回Javaのお仕事からPHP7のお仕事に移ったので、違いとか
カルチャーショックを受けた部分を書いていきたいと思います。
###2.型宣言なくね?
まずこれが一番驚いた。
Javaでは
変数に型を定義しないとまぁまず怒られる。
Eclipseさんのエラー出力やコンパイルエラーでまず怒られる。
ちなみに下記みたいな感じ
public class{
public static void main(String[] args){
int i = 0;
String text = "javava";
System.out.println(i);
System.out.println(text);
}
これをPHPで
<?php
$i=0;
$text="php!php!";
echo($i);
echo($text);
>
これで多分コンソールやらどこかに出るはず。
圧倒的なコード量の差。
本当にびっくらこいた。
####3.ラムダ式みたいなのがある
未だにちょっとよくわからなくなるのがこいつ
this->なんかの関数->なんかの関数やら値やら
最初何を意味しているか全くわかりませんでした。
Javaのthis.と思えば良いでしょう。
###4.HTMLに紛れて何やってるかわからん
もっというとJavaScriptに紛れて何やってるかわからなくなる。
な… 何を言っているのか わからねーと思うが
おれも 何を書いているのか わからなかった…
頭がどうにかなりそうだった… ソースが汚いだとか
インデントがぐちゃぐちゃだとかスパゲティとか
そんなチャチなもんじゃあ 断じてねえ
もっと恐ろしいものの片鱗を 味わったぜ…
という状態。
なにか良い例はないかな~と
こちらのかたのページのサンプルをお借りします。
http://saku.hateblo.jp/entry/2014/02/02/113006
こちらの例はわかりやすく書いてくださってますが
もしこれが3倍、4倍の量とHTMLに混じっていたらもう大変。
読み慣れていないというのもありますが、頭がどうにかなりそうでした。
###5.連想配列
勉強中。未だによくわかりませぬ。
なんでもかんでも配列に格納できるってどういうこと。
ブラックホールか何か?
追記:コメントより、
Javaでいうmap<string,object>と思えばよいのでは?とのコメントをいただきました。その通りでした!ありがとうございますm(__)m
###6.戻り値の型って決まってないの?
<?php
public function foo($var)
{
if ( [条件式1] ) {
return "result";
}
if ( [条件式2] ) {
return array();
}
}
こんなことができるらしい。
Php7ではタイプヒンティングというので型を強制できるらしいです。
phpってすげー。
###7.終わりに
Java出身者はそのほかいろいろなものがカルチャーショックを受けてます。
どうか優しく接してあげてください。