静的メソッドを含むC++クラスがあります。
宣言:
class QConfig
{
public:
static int testStatic();
};
実装:
int QConfig::testStatic()
{
return 12345;
}
これをPHPから次のように使用できるようにしたいと思います。
echo QConfig::testStatic() // expected result: 12345
私は使用してみました:
PHP_METHOD(QConfig, testStatic)
{
QConfig *qconfig;
qconfig_object *obj = (qconfig_object *)zend_object_store_get_object(
getThis() TSRMLS_CC);
qconfig = obj->qconfig;
if (qconfig != NULL) {
RETURN_LONG(qconfig->testStatic, 1);
}
RETURN_NULL();
}
..。
function_entry qconfig_methods[] = {
PHP_ME(QConfig, staticTest, NULL, ZEND_ACC_PUBLIC)
{NULL, NULL, NULL}
};
ただし、これによりビルドエラーが発生します。
/home/testuser/test/mytest.cc:81:9: error: invalid conversion from 'int (*)()' to 'long int' [-fpermissive]
/home/testuser/test/mytest.cc: At global scope:
/home/testuser/test/mytest.cc:122:1: warning: deprecated conversion from string constant to 'char*' [-Wwrite-strings]
make: *** [mytest.lo] Error 1
C ++ PHP拡張機能の静的メソッドにアクセスするにはどうすればよいですか?