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: [EMAIL PROTECTED]
>>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:[EMAIL PROTECTED]]
>>>>Sent: Wednesday, August 01, 2001 3:27 PM
>>>>To: [EMAIL PROTECTED]
>>>>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" <[EMAIL PROTECTED]>
>>>>
>>>>
>>>>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:[EMAIL PROTECTED]]
>>>>Sent: Tuesday, July 31, 2001 9:22 AM
>>>>To: [EMAIL PROTECTED]
>>>>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: [EMAIL PROTECTED]
>>>>For additional commands, e-mail: [EMAIL PROTECTED]
>>>>To contact the list administrators, e-mail:
>>>>[EMAIL PROTECTED]
>>>>-------------------------------------------------------
>>>>
>>>>--
>>>>PHP Development Mailing List <http://www.php.net/>
>>>>To unsubscribe, e-mail: [EMAIL PROTECTED]
>>>>For additional commands, e-mail: [EMAIL PROTECTED]
>>>>To contact the list administrators, e-mail:
>>>>[EMAIL PROTECTED]
>>>>
>>>>
>>>>
>>
>>
>>--
>>PHP Development Mailing List <http://www.php.net/>
>>To unsubscribe, e-mail: [EMAIL PROTECTED]
>>For additional commands, e-mail: [EMAIL PROTECTED]
>>To contact the list administrators, e-mail:
>>[EMAIL PROTECTED]
>>
>>
>
--
PHP Development Mailing List <http://www.php.net/>
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]
To contact the list administrators, e-mail: [EMAIL PROTECTED]