Newsgroups: php.internals Path: news.php.net Xref: news.php.net php.internals:8335 Return-Path: Mailing-List: contact internals-help@lists.php.net; run by ezmlm Delivered-To: mailing list internals@lists.php.net Received: (qmail 53249 invoked by uid 1010); 3 Mar 2004 09:58:39 -0000 Delivered-To: ezmlm-scan-internals@lists.php.net Delivered-To: ezmlm-internals@lists.php.net Received: (qmail 53225 invoked from network); 3 Mar 2004 09:58:38 -0000 Received: from unknown (HELO jdi.jdimedia.nl) (212.204.192.51) by pb1.pair.com with SMTP; 3 Mar 2004 09:58:38 -0000 Received: from localhost (localhost [127.0.0.1]) by jdi.jdimedia.nl (8.12.10/8.12.10) with ESMTP id i239wW9b027373; Wed, 3 Mar 2004 10:58:32 +0100 Date: Wed, 3 Mar 2004 10:58:32 +0100 (CET) X-X-Sender: derick@localhost To: Erkka Marjakangas cc: internals@lists.php.net In-Reply-To: <001001c40104$7d1cc170$aedeba50@ipana> Message-ID: References: <001001c40104$7d1cc170$aedeba50@ipana> MIME-Version: 1.0 Content-Type: TEXT/PLAIN; charset=US-ASCII Subject: Re: [PHP-DEV] Getting parent constructor called in a class chain - PHP 4.3.4 C extension From: derick@php.net (Derick Rethans) On Wed, 3 Mar 2004, Erkka Marjakangas wrote: > Hello! > > Not sure if this is the most proper place for discussing PHP > extensions, so blame me if I'm in a totally wrong place here ;-) It is :) > How do I tell PHP (4.3.4) / Zend engine to automatically call parent > constructors when creating a class that has parents in an extension? > > Or if it cannot be done automatically, what would be the way to call > the parent constructor? It is not done automatically > ZEND_FUNCTION(stringitem) > { > //TODO: should I call item ctor manually here, if so, how? Can't it be automated? > add_property_string(this_ptr, "stringitem_str", "ThisIsStringItemClass",1); > } > ... > ---Code--- > > I can always isolate the constructors to their own functions and call > them manually in appropriate places to get properties of the parent > class(es) initialized, but it sounds like a kludge and I' sure there's > an automated way to do this since methods get inherited.... There is no automated way for that, but what you can do is adding: zif_item(INTERNAL_FUNCTION_PARAM_PASSTHRU); at the locattion of "TODO". This *might* work. (Please also note that it is always smart to prefix your functions/classes with the extension name to prevent naming clashes).. Derick