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]

Reply via email to