RE: [PHP-DEV] RE: Re: How do I register a constructor in PHP (C code)

From: Date: Wed, 26 Sep 2001 08:35:53 +0000
Subject: RE: [PHP-DEV] RE: Re: How do I register a constructor in PHP (C code)
References: 1  Groups: php.dev 
Request: Send a blank email to php-dev+get-66629@lists.php.net to get a copy of this message
tr(/PHP_/ZEND_/) and still do not work. I have compared your example with my code and no difference found on it. Have you any other suggestions. I really need the constructor and I can not do it. Best regards, Emanuel Dejanu P.S. I run Apache 1.3.20 PHP 4.0.6 Linux 2.2.18-SMP SuSE 7.1 on Dual Pentium III 800 MHz (712 MB RAM) machine. > -----Original Message----- > From: Hansuck Jo [mailto:sizer@systong.co.kr] > Sent: Wednesday, September 26, 2001 11:02 AM > To: php-dev@lists.php.net > Subject: Re: [PHP-DEV] RE: Re: How do I register a > constructor in PHP (C code) > > > hm... ZEND_* functions instead PHP_* functions. > > This is sample code..(of course. You must include zend.h etc..) > > > > static zend_function_entry scl_functions[] = { > {NULL, NULL, NULL} > }; > > zend_module_entry scl_module_entry = { > "scl", > scl_functions, > ZEND_MINIT(scl), > NULL, > NULL, > NULL, > ZEND_MINFO(scl), > STANDARD_MODULE_PROPERTIES > }; > > > zend_class_entry scl_object_class_entry; > zend_function_entry scl_object_functions[] = { > ZEND_FALIAS(object, object_init, NULL) > {NULL, NULL, NULL} > }; > > > ZEND_FUNCTION(object_init) > { > zval *obj; > > obj = getThis(); > > if (obj) { > if (ZEND_NUM_ARGS() != 0) { > ZEND_WRONG_PARAM_COUNT(); > } > zend_printf("Object Create."); > > RETURN_TRUE; > } > else { > zend_error(E_WARNING, "This can't excute in > Class Method"); > RETURN_FALSE; > } > } > > ZEND_MINIT_FUNCTION(scl) > { > > INIT_CLASS_ENTRY(scl_object_class_entry, "object", > scl_object_functions); > zend_register_internal_class(&scl_object_class_entry); > } > > > Emanuel Dejanu wrote: > > > I have write using the init but still do not work. > > > > Any other ideea. > > > > Best regards, > > > > Emanuel Dejanu > > > > > > > >>-----Original Message----- > >>From: Hansuck Jo [mailto:""sizer"@.php.net] > >>Sent: Tuesday, September 25, 2001 6:31 PM > >>To: php-dev@lists.php.net > >>Subject: [PHP-DEV] Re: How do I register a constructor in > PHP (C code) > >> > >> > >>You use rt66clsss_init() instead of rt66class_contstructor(). > >>may be, it's will work. :) > >> > >> > >>Emanuel Dejanu wrote: > >> > >> > >>>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 > >>>> > >>>> > >>>> > >> > >> > >>-- > >>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 (#66629) next »