Tag: php extension

zend_call_method_with_N_params

在PHP扩展开发中有zend_call_method_with_0_params , zend_call_method_with_1_params和zend_call_method_with_2_params 。 但是如何调用超过2个参数的方法呢?

是否可以在Haskell中创建PHP扩展?

是否可以使用Haskell创建PHP扩展? 通常PHP扩展是使用C编写的。使用Haskell FFI来提供存根C扩展的function(甚至是个好主意)? 这种方法有什么警告? Zend是否会在后台执行一些会破坏这种方案的魔法?

如何将数组作为Object属性添加到PHP扩展中声明的类?

我希望我的PHP扩展声明一个等效于以下PHP的类: class MyClass { public $MyMemberArray; __construct() { $this->MyMemberArray = array(); } } 我正在按照“ 高级PHP编程 ”和“ 扩展和嵌入PHP ”中的示例进行操作,并且我能够在PHP_MINIT_FUNCTION声明一个具有整数属性的PHP_MINIT_FUNCTION 。 但是,当我使用相同的方法在PHP_MINIT_FUNCTION声明一个数组属性时,我在运行时收到以下错误消息: PHP Fatal error: Internal zval’s can’t be arrays, objects or resources in Unknown on line 0 高级PHP编程的第557页有一个例子,说明如何声明一个创建数组属性的构造函数,但示例代码不能编译(第二个“对象”似乎是多余的)。 我修复了错误并将其修改为我的代码: PHP_METHOD(MyClass, __construct) { zval *myarray; zval *pThis; pThis = getThis(); MAKE_STD_ZVAL(myarray); array_init(myarray); zend_declare_property(Z_OBJCE_P(pThis), “MyMemberArray”, sizeof(“MyMemberArray”), myarray, ZEND_ACC_PUBLIC […]

创建静态库

我正在尝试创建一个静态库,以便在我的PHP扩展中使用。 为此,我使用gcc -c file.c -o file.o编译我的.c文件并获取.o文件。 然后我使用ar rcs lib.a *.o将所有编译的对象存档到.a文件中。 执行此操作后,我在编译我的PHP扩展时引用此.a文件,但是我收到以下错误: *** Warning: Linking the shared library .la against the *** static library lib.a is not portable! 如果我使用.o文件而不是.a文件,我得到: *** Warning: Linking the shared library .la against the non-libtool *** objects file1.o file2.o is not portable! 我做错了什么,这样做的正确方法是什么?

PHP。 延期。 调用现有的PHP函数

所以我决定为php写一个扩展名。 一切似乎都很好,除非我遇到一个小问题。 我有php-5.4.9源代码。 文件ext/standard/mail.c具有很棒的function PHPAPI int php_mail(char *to, char *subject, char *message, char *headers, char *extra_cmd TSRMLS_DC) 在我的扩展中,在acme.c我包含了 … #include “php.h” #include “ext/standard/php_mail.h” #include “php_ini.h” … 所以php_mail感觉很好,工作正常。 但是,显然,我想使用mail.c的代码从第101行开始到结束于189( http://pastie.org/5444192 5-93对应的行中)。 所以我抓住了自己的想法(虽然在某些方面很尴尬)为什么不调用PHP_FUNCTION(mail) ? 到目前为止我找不到那些宏,实际上我想知道实现这个想法的最佳方法。 我的内部zend工程师(新手)建议我使用call_user_function ZEND_API int call_user_function(HashTable *function_table, zval **object_pp, zval *function_name, zval *retval_ptr, zend_uint param_count, zval *params[] TSRMLS_DC); 但我无法弄清楚如何称呼它。 这个问题! 如何( 非常欢迎mailfunction的一个例子)来调用PHP_FUNCTION定义的PHP_FUNCTION ?

如何在C中编写PHP模块

我怎样才能在C中编写自己的模块? 可能吗 ?