No.1ベストアンサー
- 回答日時:
PHP というより C++ のような気が。
。。#いや PHP には違いないのですが。。。
Zend/zend_API.h , Zend/zend_operators.h を参照されては?
PHP extension を作成するときなどでオブジェクトにアクセスするときに使っているようです。
初心者ということで、勘違いされているような気がしますが、あなたは PHP そのものを開発 or 拡張したいのですか?
であれば、なにか extension (オブジェクトをサポートしているものが良いです)のソースを pecl などから手に入れて読んでみるといいと思います。
is_callable()の第二引数の使い方がよく分らなかったので、質問をさせて頂いたところ、「zend_API.c に実際の処理内容が記述されています」とのアドバイスを他の方から頂きました。
それで、zend_API.c を見てみたところ、
ZEND_API zend_bool zend_is_callable(zval *callable, uint check_flags, char **callable_name TSRMLS_DC) /* {{{ */
{
return zend_is_callable_ex(callable, NULL, check_flags, callable_name, NULL, NULL, NULL TSRMLS_CC);
}
とありましたので、
ZEND_API zend_bool zend_is_callable_ex(zval *callable, zval *object_ptr, uint check_flags, char **callable_name, int *callable_name_len, zend_fcall_info_cache *fcc, char **error TSRMLS_DC) /* {{{ */
の中を見たところ、
if (check_flags & IS_CALLABLE_CHECK_SYNTAX_ONLY) {
fcc->called_scope = fcc->calling_scope;
return 1;
}
を見つけました。それで、 fcc->calling_scope とは何かを探したところ、
switch (Z_TYPE_P(callable)) {
case IS_STRING:
if (object_ptr) {
fcc->object_ptr = object_ptr;
fcc->calling_scope = Z_OBJCE_P(object_ptr);
となっていました。それで、 Z_OBJCE_P() を探したのですが、見つけることができなかったので、質問をさせていただきました。
ところが本日ご紹介いただいた zend_operators.h を見てみたら、そこに Z_OBJCE_P() の定義が記述されていました。
#define Z_OBJCE_P(zval_p)Z_OBJCE(*zval_p)
#define Z_OBJCE(zval)zend_get_class_entry(&(zval) TSRMLS_CC)
zend_get_class_entry(&(zval) TSRMLS_CC) は、 zend_API.c に定義が記述されており、クラスの型チェックを行うものであることが分りました。
結局、当初の疑問を解消してくれる記述はソースコード内に見当たりませんでしたが、少しスッキリしました。
どうも、ありがとうございました。m(_ _)m
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Instagram HTML5の廃止とJavaScript 2 2022/04/13 21:05
- Excel(エクセル) ExcelのFSO(ファイルシステムオブジェクト)について学びたいのですが。。。 5 2022/12/15 18:06
- C言語・C++・C# VisualStudioについて何点か 1 2023/01/28 13:15
- HTML・CSS PrettierのHTMLの記述変更 linkタグ 1 2022/06/23 04:06
- 実用・教育 趣味について。 1 2022/07/29 07:56
- Java プログラミングのプの字も知りませんが、プログラミングを勉強したいです。とりあえず、学ぶものを決めない 3 2022/11/04 13:10
- 物理学 量子力学についていくつか質問があります。 まだ興味を持ち始めたばかりで、完全な物理未経験者のため、未 5 2022/10/25 18:11
- 美術・アート 将来、鉛筆デッサンで似顔絵を描けるようになりたい者です。(時間はかかる覚悟はしております。) そのた 2 2022/11/21 14:10
- モンスト モンストの質問です。 ワンピースから始めた初心者なんですけど、友達に1番強いと勧められて年末年始用に 1 2022/10/07 21:24
- Windows 10 パソコン得意な人どうやって勉強したか教えてください 13 2022/04/26 00:41
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
こちらはただの直列処理ですか?
-
PHPでこのコード自体に意味は無...
-
php 入力画面から確認表示画面...
-
PHP8を使うと、大量のWarningが...
-
アップロード画像数でCSSを分け...
-
PHPSpreadsheetを使って関数を...
-
phpでcookieがうまく保存されない
-
ワードプレスサイト PHP8.0.25...
-
入力フォームの空白や改行を制...
-
PHP一覧表示した項目にリンクを...
-
オススメのプログラミングスク...
-
PHPでのパスワード制限のセキュ...
-
htmlのエラーについて(デバッグ)
-
アマゾンのような評価の星を選...
-
SFTPなどは使わないホームペー...
-
ファイルアップロードに関して...
-
Q&Aサイトを作成していてURLの...
-
画像が表示出来ません。
-
phpでPEAR::DBを使っているので...
-
php 確認表示画面で値をSESSION...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
phpでcookieがうまく保存されない
-
index.phpに入るには、どうすれ...
-
PHP8を使うと、大量のWarningが...
-
PHPSpreadsheetを使って関数を...
-
重複を防ぐ記述について教えて...
-
index.phpって何ですか? 具体...
-
awsにApacheとPHPを入れて、何...
-
phpでPEAR::DBを使っているので...
-
php 確認表示画面で値をSESSION...
-
PHPでユーザー情報を入力して簡...
-
ワードプレスサイト PHP8.0.25...
-
php 完了画面の送信メールのコ...
-
SFTPなどは使わないホームペー...
-
PHPのセッション有効期限について
-
csvファイルについて教えて下さ...
-
PHPとHTML+Xamppの掲示板で画像...
-
PHPで訪問回数を表示するカウン...
-
ファイルアップロードに関して...
-
掲示板を作成しておりアップロ...
-
Q&Aサイトを作成していてURLの...
おすすめ情報