この記事では、開発者がPHPを見たときに動的言語で遭遇する可能性のあるクールな瞬間について、またはその逆に、他の動的言語を学習するときにPHP開発者について話をしたいと思います。 静的言語は考慮していません。すべてがそこにはっきりしているようだからです。
著者、トピックは何ですか? 誰があなたのPHPを必要としますか?
このトピックを書くことにした理由は簡単です:PHPを書いていない(またはPHPでほとんど書いていない)人たちに、この言語の興味深い点について少し話してもらいたいと思います。 PHPが同じPython、Ruby、Javascriptよりも優れていることを誰かに説得したいわけではありません[ここでWebのお気に入りの言語を置き換えてください]。さらに、そうは思いません。 彼らがPHPに出くわしたとき、私は単に「力に腹を立てています」。これは単に、これが悪い言語であると主張することなく主張するだけです。
PHPとJavascriptの興味深い違い
ほとんどの場合、誰もがWeb向けの書き込みを知っているため、JSを参照動的言語として取り上げます。 さて、PHPで書いていてJSを知らない人にとって、この記事はJavascriptをよりよく理解するのに役立つという意味でおそらく役に立つでしょう。
オブジェクトを除くすべて-値
PHPには多くの組み込み型があり、いずれもオブジェクトのように動作しません。 組み込み型にはプロパティ、メソッドなどがありません。 この点で、PHPは通常のCに似ています。これは、次のステートメントに進むときに役割を果たします。
デフォルトでは、すべてが値で渡され、オブジェクトも渡されます
PHPでは、C言語の絶対概念を引き上げて、すべてが値で渡されるようにしました。 最初はオブジェクトに対してもそれを行いましたが、概念を少し変更しました-オブジェクトはまだ値ですが、この値はクラスインスタンスへの参照です。
これはどういう意味ですか?
簡単な例を見てみましょう:
PHP:
<?php $arr = array( 'key1' => 'value1', 'key2' => 'value2', ); function doSmthWithArray($arr) { $arr['key3'] = 'value3'; } doSmthWithArray($arr); print_r($arr); // "key1 => value1, key2 => value2" —
Javascript:
var arr = { key1: 'value1', key2: 'value2' }; function doSmthWithArray(arr) { arr['key3'] = 'value3'; } doSmthWithArray(arr); console.log(arr); // "key1 => value1, key2 => value2, key3 => value3" — .. JS, , «», , (, — . , , , )
, , , . , , , .
PHP:
<?php $funcs = array(); for($i = 0; $i < 10; $i++) $funcs[] = function() use($i) { return $i; }; foreach($funcs as $func) echo $func().","; // 0, 1, 2, 3, 4, 5, 6, 7, 8, 9 ! $funcs = array(); for($i = 0; $i < 10; $i++) $funcs[] = function() use(&$i) { return $i; }; foreach($funcs as $func) echo $func().","; // 10, 10, 10, 10, 10, 10, 10, 10, 10, 10
:)? !
Javascript:
var funcs = []; for(var i = 0; i < 10; i++) funcs.push(function() { return i; }); for(var j = 0; j < funcs.length; j++) console.log(funcs[j]()); // 10 10
, , JS, . PHP PHP, , .
PHP , "$var .= something;" PHP — , . JS , «var += something» .
, PHP : [.]. :
<?php $str = 3.'3'; // 33 $another_str = 3 + '3'; // 6
Javascript [ 3 + '3' ] 33. . , . .
Copy-on-write
. : PHP , , , . , , , , . , . .
, PHP , jQuery, $.extend().
PHP -
, , JS: -, , , length …
, PHP
PHP , JS: , . : var JavaScript :).
, , , . , PHP PHP, , , , .