javascriptとPHPの違い

javascriptとPHPの違い

javascriptとPHPでの仕様の違いみたいなのをメモ。

両者の大きな違いは、(初心者レベルのおいて)オブジェクト指向か否かなのではと思います。

javascriptはオブジェクト指向だから、なんでもオブジェクトでそのオブジェクトがメソッドやプロパティを持っているのに対し、PHPは基本、対象を引数とした関数でオブジェクトを生成する。

Array(配列)

配列に限らずだけど、javascriptでのインスタンス生成はnew演算子を使うところ、PHPだと関数を使う。

javascriptでの配列生成方法は、以下の2通りある。注意が必要なのは、new Arrayの引数が1つのときは、配列生成ではなく、lengthが3の、値がすべてundefinedの配列を作るという意味になること。Array(3)=[undefined,undefined,undefined]

var a = new Array(1,2,3);
var b = [1,2,3];
b[3] = 4; //[1,2,3,4]

対するPHPはArray関数を使うのでnewはいらない。

$a = Array(1,2,3);
$b = [1,2,3];
$b[3] = 4; //[1,2,3,4]
$c[] = "1"; $c[] = "2"; $c[] = "3"; //$cは["1","2","3"]で$c[0]は"1"である。

続いて連想配列(Rubyのハッシュ)。javascriptの連想配列はオブジェクトの最も基本的な形とされていて、PHPの連想配列とはちょっと捕らえ方が違う。

javascriptでは、オブジェクトのプロパティが連想配列みたいな感じ。

var a = new Object() //{}
var b = {x:1,y:2};
var c = {"key1":"hoge1","key2":"hoge2"};
alert(b.x) //1
alert(b[x]) //1

PHPでは、{}ではなく、普通の配列の[]でくくって、=>の矢印でキーと値をつなぐ。

$a = ["x"=>"1","y"=>"2"]

参照について

参照の考えも両者異なる。

javascriptでは、変数にオブジェクトをぶち込むときは、その変数はオブジェクトを参照する形をとるので、

var a = {x:1,y:2};
var b = a;
b.x = 100;
alert(a.x);//1でなく100

PHPでは、上のようなことは起こらず、100でなく1が表示される。となっているのはPHP4までらしく、PHP5からはjavascriptのように参照渡しがされるようです。

ちなみに、PHP4までの参照渡しは、$b1=&$a1;のように、参照渡しをしたい変数の前に&マークをつける必要があります。

2012年12月18日6:12 PM | カテゴリー: javascript,PHP | コメント(0)

コメントを残す

メールアドレスが公開されることはありません。