Ich bin schon seit langem daran interessiert mir mal eine eigene Extension f�r PHP zu programmieren. Nun ist es ja nicht unbedingt schwer einfache Funktionen zu implementieren darum wollte ich auch mal weiter zu einer eigenen Klasse. Nur komme ich mit den Hilfen aus meinem PHP5 Buch da nicht mehr unbedingt weiter. Okay es ist alles beschrieben aber was wie wo hin muss ist da nicht unbedingt beschrieben. Das meiste muss ich selbst rumtesten. Nun habe ich mir eine Klasse geschrieben die in PHP wie folgt aussehen w�rden:
Erstelle ich jedoch eine neue Instanz der Klasse Foo, so bekomme ich nichts ausgegeben.
php_foo.h
foo.c
Mache ich nun:
so passiert nichts. Ich bekomme nichts ausgegeben. Wieso?
(Falls irgendwas wichtiges vom Code fehlt, bitte bescheid sagen, da ich nun nicht alles kopieren wollte und auch nicht genau weiss, was man braucht um den Fehler zu finden)
Code:
class Foo { public function __construct($a, $b) { printf("a: %s\nb: %s", $a, $b); } }
php_foo.h
Code:
ZEND_METHOD(rss2, __construct);
Code:
PHP_MINIT_FUNCTION(foo) { /* If you have INI entries, uncomment these lines ZEND_INIT_MODULE_GLOBALS(foo, php_foo_init_globals, NULL); REGISTER_INI_ENTRIES(); */ zend_class_entry foo_ce; INIT_CLASS_ENTRY(foo_ce, "foo", NULL); foo_ce_ptr = zend_register_internal_class(&foo_ce); return SUCCESS; } function_entry foo_functions[] = { PHP_ME(foo, __construct, NULL, ZEND_ACC_PUBLIC) {NULL, NULL, NULL} }; /*...*/ ZEND_METHOD(foo, __construct) { char *a, *b; int a_len, b_len; if(zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "ss", &a, &a_len, &b, &b_len) == FAILURE) { return; } php_printf("a: %s\nb: %s", a, b); }
Code:
<?php $foo = new foo('hallo', 'welt'); ?>
(Falls irgendwas wichtiges vom Code fehlt, bitte bescheid sagen, da ich nun nicht alles kopieren wollte und auch nicht genau weiss, was man braucht um den Fehler zu finden)
Kommentar