お世話になります。
Standardクラスのオブジェクトを返す、PHP7用のエクステンションを作っています。
以下のように実装したのですが、zvalの理解がないせいか、セグメンテーション違反で落ちてしまいます。
どのようにして、Standardクラスのオブジェクトを返せば良いのでしょうか。
実行環境
php7.1.12
コンパイラGCC
C
1// php-myExt.h 2static zend_class_entry *my_ext_ce;
C
1// myExt.c 2 3PHP_FUNCTION(MY_FUNC){ 4 5 size_t str_len; 6 char *str = NULL; 7 8 // 引数の取得 9 if (zend_parse_parameters(ZEND_NUM_ARGS(), "s", &str, &str_len) == FAILURE) { 10 return; 11 } 12 13 // puts(str); 14 15 // 返却オブジェクトの生成 16 zval *myStr; 17 18 // メンバ変数の追加 19 add_property_stringl(myStr,"str",str,strlen(str)); 20 21 // オブジェクトの返却 22 *return_value = *myStr; 23 zval_copy_ctor(return_value); 24 25 return; 26}
php
1// テストコード 2<?php 3// php -d extesion=./modules/myExt.so test.php 4$mystr = MY_FUNC("ホゲ"); 5var_dump($mystr); 6
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。