Req #35339 [Asn->Fbk]: COM "As" behaviour

From: Date: Mon, 16 Dec 2019 08:55:34 +0000
Subject: Req #35339 [Asn->Fbk]: COM "As" behaviour
References: 1  Groups: php.bugs 
Request: Send a blank email to php-bugs+get-224324@lists.php.net to get a copy of this message
Edit report at https://bugs.php.net/bug.php?id=35339&edit=1 ID: 35339 Updated by: cmb@php.net Reported by: amir at foresthc dot com Summary: COM "As" behaviour -Status: Assigned +Status: Feedback Type: Feature/Change Request Package: COM related Operating System: Windows PHP Version: Next Minor Version Assigned To: cmb Block user comment: N Private report: N New Comment: Is this feature request still relevant? It seems to me that this pattern (having a factory using an out parameter instead of returning the instantiated object) is rather uncommon, and as such it might not be worthwhile to add support for it. Previous Comments: ------------------------------------------------------------------------ [2019-10-18 11:43:46] girgias@php.net Assigning to cmb as he's the new maintainer for COM ------------------------------------------------------------------------ [2005-11-22 21:17:14] amir at foresthc dot com Description: ------------ In visual basic it is possible to declare a variable as a pointer to a certain type of object, but not instanciate it yet. I have run into a problem using a 3rd party COM library, where it is neccessary to pass such an empty pointer by ref to a method, in order to get an instance or another class. Reproduce code: --------------- // This code is not real, it's just to illustrate the problem: $factory = new COM('Example.Factory'); // Here we have several options, none of which work: $product = new VARIANT; $product = new COM('Example.Product'); variant_set_type($product, VT_EMPTY); // Whatever I have done in the previous lines, this method fails. If it gets an instance of an instance of an object - it fails. If it gets anything that is not of type Example.Product, it fails. $factory->Create_Product($product); Expected result: ---------------- Here is the "equivalent" VB code that works: Dim objFactory As Example.Factory Dim objProduct As Example.Product // Any of these would fail: Dim objProduct As New Example.Product Dim objProduct As Variant Sub Main() Set objFactory = new Example.Factory objFactory.Create_Product(objProduct) End Sub Actual result: -------------- The Create_Product method will fail if it does not recieve the equivalent of the line: "Dim objProduct As Example.Product". Which as far as I can understand, is not possible to supply it with at this point. ------------------------------------------------------------------------ -- Edit this bug report at https://bugs.php.net/bug.php?id=35339&edit=1

« previous php.bugs (#224324) next »