tl;dr : PHP は Javascript を生成できますが、この 2 つは相互的または同期的に話すことができません。
これは、php と javascript を「含む」リクエストが実行されたときに何が起こるかのチェーンを簡単に示したものです。
- リクエストがサーバーに送信されます (つまり、ユーザーがブラウザでスクリプトの URL を入力します)。
- サーバーは php スクリプトを完全に処理し、ブラウザー出力 (html とおそらく javascript) を吐き出します。
- ユーザー ブラウザー (クライアント) は html を取得し、それをユーザー画面にレンダリングし、ページの JavaScript があればそれを実行します。
各ステップは、前のステップが完了した後にのみ発生します。つまり、javascript が実行されているとき、PHP は既になくなっています。PHP で宣言された関数を JavaScript で呼び出す方法はありません。
ただし、ここで重要なことは、ステップ 3 がステップ 2 に依存していることです。つまり、最終的な html が PHP の出力決定に依存するように、javascript も同様です。言い換えれば、PHP が JavaScript を動的に生成することが可能であり、それがまさに質問のコードで起こっていることです。
しかし、より実用的な観点から見てみましょう。リクエストを見てみましょう。
ステップ1
リクエストがサーバーに送信されます。次のコードが実行のために取得されます。
<?php
$var1 = 300;
echo $var1.'echo_via_php...<br />'; //so far so good
?>
<script type="text/javascript">
document.write('PHP to JS -> <br />') ;
var x = '<?php echo $var1; ?>';
document.write('doc_write_java_X: <br />') ;
document.write(x) ;
document.write(' ( if = 300 its okay...i guess )<br />') ;
var php_y = '50' ;
</script>
</div>
<div>
<?php
echo '<br /><br />now js to PHP...';
/////////////////also works java to php...
$var2 = "<script>document.write(php_y)</script>";
echo 'VAR2 is equal php_y: '.$var2;
?>
ステップ2
PHP が処理され、次の出力が生成されてクライアントに送信されます。
300echo_via_php...<br />
<script type="text/javascript">
document.write('PHP to JS -> <br />') ;
var x = '300';
document.write('doc_write_java_X: <br />') ;
document.write(x) ;
document.write(' ( if = 300 its okay...i guess )<br />') ;
var php_y = '50' ;
</script>
</div>
<div>
<br /><br />now js to PHP...
<script>document.write(php_y)</script>
VAR2 is equal php_y: <script>document.write(php_y)</script>
ステップ 3
ユーザーのブラウザーがサーバーの出力を収集し、javascript を実行すると、次の結果が得られます。
300echo_via_php...<br />
<script type="text/javascript">
document.write('PHP to JS -> <br />') ;
var x = '300';
document.write('doc_write_java_X: <br />') ;
document.write(x) ;
document.write(' ( if = 300 its okay...i guess )<br />') ;
var php_y = '50' ;
</script>
PHP to JS -> <br />
doc_write_java_X: <br />
300
( if = 300 its okay...i guess )<br />
</div>
<div>
<br /><br />now js to PHP...
<script>document.write(php_y)</script>
50
VAR2 is equal php_y: <script>document.write(php_y)</script>
50
元の質問でコードを使用したため、この例は確かに最も簡単な方法ではありませんが、うまくいけば要点を示しています。PHP は、後でクライアントによって読み取られる出力を生成するだけです。ある言語が別の言語のコードを生成するのは混乱を招く可能性がありますが、javascript を html と同様にテキストと考えると理にかなっています。