How do I register a constructor in PHP (C code)

From: Date: Tue, 25 Sep 2001 14:12:37 +0000
Subject: How do I register a constructor in PHP (C code)
References: 1  Groups: php.dev 
Request: Send a blank email to php-dev+get-66553@lists.php.net to get a copy of this message
I write an extension and I want to register a new class but I can not get my function to be registered as a constructor. ex: PHP_FUNCTION(rt66class_constructor); static zend_function_entry php_rt66class_class_functions[] = { PHP_FALIAS(RT66Class, rt66class_constructor, NULL) }; PHP_MINIT_FUNCTION(rt66util) { zend_class_entry rt66class_class_entry; INIT_CLASS_ENTRY(rt66class_class_entry, "RT66Class", php_rt66class_class_functions); RT66Class_class_entry_ptr = zend_register_internal_class(&rt66class_class_entry); return SUCCESS; } PHP_FUNCTION(rt66class_constructor) { ZEND_PUTS("RT66Class Contructor"); } ----- <?php dl(myext.so); $myvar = RT66Class(); ?> nothing appear on the screen. Please tell me how can I make it to work. Many thanks, Emanuel Dejanu > -----Original Message----- > From: Andy [mailto:andy@php.net] > Sent: Wednesday, August 01, 2001 3:27 PM > To: php-dev@lists.php.net > Subject: Fwd: FW: [PHP-DEV] print_r > > > > > ---------- Forwarded Message ---------- > Subject: FW: [PHP-DEV] print_r > Date: Wed, 1 Aug 2001 08:19:09 +0300 > From: "Emanuel Dejanu" <edejanu@route66.ro> > > > Sorry to forward this to you but I really have problems in > printing a doubled linked class. > Can you take a look at the following message and give me > an answer. > > Thanks, > > Emanuel Dejanu > > -----Original Message----- > From: Emanuel Dejanu [mailto:edejanu@route66.ro] > Sent: Tuesday, July 31, 2001 9:22 AM > To: php-dev@lists.php.net > Subject: [PHP-DEV] print_r > > > > Hi, > > Is there a posibility to print an object but to not print some fields. > > If I use print_r he will print all variabiles from my object, > but I want on > variabile to not be printed. I do not want to write my own function. > Ex. > > class Node { > var $name; > var $parent = '/' > var $children = array(); > function Node($name, &$parent) { > $this->parent = &$parent; > $this->name = $name; > } > } > > $rootNode = new Node('root', ''); > array_push($rootNode->children, new Node('child1', $rootNode)); > $child1Node = &$rootNode->children[0]; > array_push($child1Node->children, new Node('child1', $child1Node)); > > print_r($rootNode); > > will print make a recursivity. What will be nice is to allow that some > variabiles to not > be printed like this: > > class Node { > var $name; > var $__parent = '/' > var $children = array(); > function Node($name, &$parent) { > $this->__parent = &$parent; > $this->name = $name; > } > } > > ..... /* add the root and childrens */ > > print_r($rootNode); > > will print now the corret tree. > > Bellow you find the only modification that need to be done > for this to work. > > Best regards, > > Emanuel Dejanu > > > File: Zend/zend.c > > static void print_hash(HashTable *ht, int indent) > { > zval **tmp; > char *string_key; > HashPosition iterator; > unsigned long num_key, str_len; > int i, key_type; /****** HERE *****/ > > for (i=0; i<indent; i++) { > ZEND_PUTS(" "); > } > ZEND_PUTS("(\n"); > indent += PRINT_ZVAL_INDENT; > zend_hash_internal_pointer_reset_ex(ht, &iterator); > while (zend_hash_get_current_data_ex(ht, (void **) > &tmp, &iterator) == > SUCCESS) { > > > /******** HERE **************/ > > key_type = zend_hash_get_current_key_ex(ht, > &string_key, &str_len, > &num_key, 0, &iterator); > if (key_type == HASH_KEY_IS_STRING) > if (string_key[0] == '_' && > string_key[1] == '_') continue; > > > /******* HERE **************/ > > > for (i=0; i<indent; i++) { > ZEND_PUTS(" "); > } > ZEND_PUTS("["); > switch (key_type) { > case HASH_KEY_IS_STRING: > ZEND_PUTS(string_key); > break; > case HASH_KEY_IS_LONG: > zend_printf("%ld",num_key); > break; > } > ZEND_PUTS("] => "); > zend_print_zval_r(*tmp, indent+PRINT_ZVAL_INDENT); > ZEND_PUTS("\n"); > zend_hash_move_forward_ex(ht, &iterator); > } > indent -= PRINT_ZVAL_INDENT; > for (i=0; i<indent; i++) { > ZEND_PUTS(" "); > } > ZEND_PUTS(")\n"); > } > > > -- > PHP Development Mailing List <http://www.php.net/> > To unsubscribe, e-mail: php-dev-unsubscribe@lists.php.net > For additional commands, e-mail: php-dev-help@lists.php.net > To contact the list administrators, e-mail: > php-list-admin@lists.php.net > ------------------------------------------------------- > > -- > PHP Development Mailing List <http://www.php.net/> > To unsubscribe, e-mail: php-dev-unsubscribe@lists.php.net > For additional commands, e-mail: php-dev-help@lists.php.net > To contact the list administrators, e-mail: > php-list-admin@lists.php.net >

« previous php.dev (#66553) next »