回答(全1件)
ベストアンサー
回答の評価を上げる
以下のような回答は評価を上げましょう。
- 正しい回答
- わかりやすい回答
- ためになる回答
評価が高い回答ほどページの上位に表示されます。
5
この機能は開放されていません
評価を下げる条件を満たしてません
こんにちは。
【質問1】Zval や HashTables などはどの段階で作成されるのですか?
変数値や即値に対応するzvalやHashTableがいつ生成されるかということであれば、PHPプログラムコンパイル時に静的に確定できる値はopcode生成フェーズで、PHPプログラム実行時に動的に作られる値はopcode実行フェーズで生成されます。
上の図の「Zend VM Executor」が実行フェーズを担当する機能です。
【質問2】シンボルテーブルはスコープごとに作成されるのですか?
はい。
この図で表現しているのは、グローバルスコープと関数スコープとで異なるシンボルテーブル(=変数テーブル)を利用しているよね、という内容になるかと思います。
<?php
function do_something($s)
{
$s = 'was';
return $s;
}
$a = 'this is';
$b = do_something($a);
上記プログラムにおいて、関数スコープでは$s
にアクセスできるけれども$a
にはアクセスできない、グローバルスコープでは$s
にアクセスできないけれども$a
にはアクセスできる、というのは普段のコーディングで体験していることだと思います。
【質問2がYesだった場合】属するシンボルテーブル名を確認する方法はありますか?
PHPの標準関数では不可能なように思います。
自分でextensionを書くなり、気になる箇所にデバッグコードを仕込んでPHPをビルドし直すなり、などすれば可能だと思います。
【質問3】function stack とはなんですか?
スタックというのは後入れ先出し(LIFO)のデータ構造です。
関数の呼び出しはスタック構造で管理されていて、関数内で関数を呼び出すと順にスタックに積まれていきます。
PHPがはじめての言語なので、PHPの内部構造(C言語)は読めません(・ω・`;)
とのことですが、現在の興味を深めていきたいのであればC言語レイヤで試行錯誤していかないと効率が悪すぎるように思います。
わからないなりにソースコードに目を通しても良いと思います(重要な情報がコメントとして書かれていたりします)し、もしくはPHPにデバッグコードを埋めて実行してみるだけでも全然違うと思いますよ。
では、頑張って下さい!
2016/11/15 15:05 投稿
コメント(1)
isset($replyData['Comments']["total_count"]) ? $replyData['Comments']["total_count"] ?>
15分調べてもわからないことは、teratailで質問しよう!
92.64%
関連した質問
-
解決済
Felica(Pasori)とPHPの連携
機器を所持していないと難しいと思いますが、
以下についてご教授いただきたく、何卒よろしくお願い致します。

SONYのFelica機器(Pasori)を使用して、PHPとの連携を取
-
解決済
MVCでの登録フォームのエラーチェック
初めての質問です、よろしくお願い申し上げます。

php初心者ながらMVCにチャレンジしたく、zenzdframeworkで会員登録の仕組みを練習しています。
下記のように記述して
-
解決済
ソースコードの意味が理解できない
ソースコードの意味が理解できません。
メソッド名やソースコードの一部をそのまま検索したのですが、いまいち分かりません。
一か所ではなく複数ヶ所あります。

1の$this->boo
-
受付中
AS400(ibm i)上で稼働しているPHPアプリをWindows環境へ移行する際にエラー
前提・実現したいこと

現在、AS400(V6R1)上で稼働しているPHPのWebアプリケーションをWindows環境に移行したいと考えております。 
PHPアプリケーションはze
同じタグがついた質問を見る
-
PHP
9234questions
PHPは、Webサイト構築に特化して開発されたプログラミング言語です。大きな特徴のひとつは、HTMLに直接プログラムを埋め込むことができるという点です。PHPを用いることで、HTMLを動的コンテンツとして出力できます。HTMLがそのままブラウザに表示されるのに対し、PHPプログラムはサーバ側で実行された結果がブラウザに表示されるため、PHPスクリプトは「サーバサイドスクリプト」と呼ばれています。
-
C
1386questions
"C言語は、1972年にAT&Tベル研究所の、デニス・リッチーが主体となって作成したプログラミング言語です。 B言語の後継言語として開発されたことからC言語と命名。そのため、表記法などはB言語やALGOLに近いとされています。 Cの拡張版であるC++言語とともに、現在世界中でもっとも普及されているプログラミング言語です。"
2016/11/15 15:37
おお!まさか、参考として拝見していた hnw さんから回答をいただけるとは、めっちゃテンションあがりました٩( 'ω' )و
各質問に対してわかりやすい回答、アドバイスありがとうございます。
PHPの内部構造(C言語)も読めるように精進します。
お陰様で理解が進みました。
お忙しい中、回答ありがとうございましたm(__)m