Hi,
We are using the built-in SOAP extension.
From the docs:
$server = new SoapClient("books.wsdl", array('classmap' =>
array('book' => "MyBook")));
Soap server will return a complex data type 'book'. The data fields
for book will be mapped to the php class' data fields in MyBook. It
seems that the constructor for MyBook is never called (according to
our tests). The data fields are mapped somehow internally.
If I want MyBook to be much more than just a data container, then I
can foresee that I will often want/need a constructor but __construct
is not called.
Could this be considered a bug? Any thoughts?
--
-- Matt Friedman
Hi Matt,
During SOAP envelope deserialization, objects are created indirectly.
So constructors are not called (constructor may need arguments).
This is not a bug.
Thanks. Dmitry.
-----Original Message-----
From: Matt Friedman [mailto:matt.friedman@gmail.com]
Sent: Tuesday, December 13, 2005 9:49 PM
To: internals@lists.php.net
Subject: [PHP-DEV] SOAP Question re: Class Mapping & ConstructorsHi,
We are using the built-in SOAP extension.
From the docs:
$server = new SoapClient("books.wsdl", array('classmap' =>
array('book' => "MyBook")));Soap server will return a complex data type 'book'. The data
fields for book will be mapped to the php class' data fields
in MyBook. It seems that the constructor for MyBook is never
called (according to our tests). The data fields are mapped
somehow internally.If I want MyBook to be much more than just a data container,
then I can foresee that I will often want/need a constructor
but __construct is not called.Could this be considered a bug? Any thoughts?
--
-- Matt Friedman
Hi Dmitry,
It is understandable that you don't know what the arguments might be.
But I would rather have the constructor called with no arguments, or
with just the std object book
passed to the constructor instead of
no constructor at all.
Is it possible?
Thanks,
Matt.
Hi Matt,
During SOAP envelope deserialization, objects are created indirectly.
So constructors are not called (constructor may need arguments).This is not a bug.
Thanks. Dmitry.
-----Original Message-----
From: Matt Friedman [mailto:matt.friedman@gmail.com]
Sent: Tuesday, December 13, 2005 9:49 PM
To: internals@lists.php.net
Subject: [PHP-DEV] SOAP Question re: Class Mapping & ConstructorsHi,
We are using the built-in SOAP extension.
From the docs:
$server = new SoapClient("books.wsdl", array('classmap' =>
array('book' => "MyBook")));Soap server will return a complex data type 'book'. The data
fields for book will be mapped to the php class' data fields
in MyBook. It seems that the constructor for MyBook is never
called (according to our tests). The data fields are mapped
somehow internally.If I want MyBook to be much more than just a data container,
then I can foresee that I will often want/need a constructor
but __construct is not called.Could this be considered a bug? Any thoughts?
--
-- Matt Friedman--
--
--
-- Matt Friedman
Hi Matt & Dmitry,
Calling the magic __wakeup() func might be appropriate in this case,
since SOAP envelope deserialization is a lot like regular
deserialization. It is a lot less confusing than calling the
constructor w/ no args and seems quite appropriate given the context.
Andrew
Hi Dmitry,
It is understandable that you don't know what the arguments might be.
But I would rather have the constructor called with no arguments, or
with just the std objectbook
passed to the constructor instead of
no constructor at all.Is it possible?
Thanks,
Matt.Hi Matt,
During SOAP envelope deserialization, objects are created indirectly.
So constructors are not called (constructor may need arguments).This is not a bug.
Thanks. Dmitry.
-----Original Message-----
From: Matt Friedman [mailto:matt.friedman@gmail.com]
Sent: Tuesday, December 13, 2005 9:49 PM
To: internals@lists.php.net
Subject: [PHP-DEV] SOAP Question re: Class Mapping & ConstructorsHi,
We are using the built-in SOAP extension.
From the docs:
$server = new SoapClient("books.wsdl", array('classmap' =>
array('book' => "MyBook")));Soap server will return a complex data type 'book'. The data
fields for book will be mapped to the php class' data fields
in MyBook. It seems that the constructor for MyBook is never
called (according to our tests). The data fields are mapped
somehow internally.If I want MyBook to be much more than just a data container,
then I can foresee that I will often want/need a constructor
but __construct is not called.Could this be considered a bug? Any thoughts?
--
-- Matt Friedman--
--
--
-- Matt Friedman--
--
Andrew Yochum
Plexpod
andrew@plexpod.com
718-360-0879
That sounds very good.
Many thanks for the assistance.
Matt.
Hi Matt & Dmitry,
Calling the magic __wakeup() func might be appropriate in this case,
since SOAP envelope deserialization is a lot like regular
deserialization. It is a lot less confusing than calling the
constructor w/ no args and seems quite appropriate given the context.Andrew
Hi Dmitry,
It is understandable that you don't know what the arguments might be.
But I would rather have the constructor called with no arguments, or
with just the std objectbook
passed to the constructor instead of
no constructor at all.Is it possible?
Thanks,
Matt.Hi Matt,
During SOAP envelope deserialization, objects are created indirectly.
So constructors are not called (constructor may need arguments).This is not a bug.
Thanks. Dmitry.
-----Original Message-----
From: Matt Friedman [mailto:matt.friedman@gmail.com]
Sent: Tuesday, December 13, 2005 9:49 PM
To: internals@lists.php.net
Subject: [PHP-DEV] SOAP Question re: Class Mapping & ConstructorsHi,
We are using the built-in SOAP extension.
From the docs:
$server = new SoapClient("books.wsdl", array('classmap' =>
array('book' => "MyBook")));Soap server will return a complex data type 'book'. The data
fields for book will be mapped to the php class' data fields
in MyBook. It seems that the constructor for MyBook is never
called (according to our tests). The data fields are mapped
somehow internally.If I want MyBook to be much more than just a data container,
then I can foresee that I will often want/need a constructor
but __construct is not called.Could this be considered a bug? Any thoughts?
--
-- Matt Friedman--
--
--
-- Matt Friedman--
--
Andrew Yochum
Plexpod
andrew@plexpod.com
718-360-0879
--
-- Matt Friedman
I would like to second this suggestion. I have been playing with the
classmap option and could use the ability to manipulate the object
after instantiation but before it's returned to the user.
-adam
Hi Matt & Dmitry,
Calling the magic __wakeup() func might be appropriate in this case,
since SOAP envelope deserialization is a lot like regular
deserialization. It is a lot less confusing than calling the
constructor w/ no args and seems quite appropriate given the context.Andrew
Hi Dmitry,
It is understandable that you don't know what the arguments might be.
But I would rather have the constructor called with no arguments, or
with just the std objectbook
passed to the constructor instead of
no constructor at all.Is it possible?
Thanks,
Matt.Hi Matt,
During SOAP envelope deserialization, objects are created indirectly.
So constructors are not called (constructor may need arguments).This is not a bug.
Thanks. Dmitry.
-----Original Message-----
From: Matt Friedman [mailto:matt.friedman@gmail.com]
Sent: Tuesday, December 13, 2005 9:49 PM
To: internals@lists.php.net
Subject: [PHP-DEV] SOAP Question re: Class Mapping & ConstructorsHi,
We are using the built-in SOAP extension.
From the docs:
$server = new SoapClient("books.wsdl", array('classmap' =>
array('book' => "MyBook")));Soap server will return a complex data type 'book'. The data
fields for book will be mapped to the php class' data fields
in MyBook. It seems that the constructor for MyBook is never
called (according to our tests). The data fields are mapped
somehow internally.If I want MyBook to be much more than just a data container,
then I can foresee that I will often want/need a constructor
but __construct is not called.Could this be considered a bug? Any thoughts?
--
-- Matt Friedman--
--
--
-- Matt Friedman--
--
adam@trachtenberg.com | http://www.trachtenberg.com
author of o'reilly's "upgrading to php 5" and "php cookbook"
avoid the holiday rush, buy your copies today!