tags:

views:

111

answers:

2

I have been working with the Ebay api for a project and have found it great. I have however found a problem now, more PHP related.

When I read my items from Ebay, I store a bunch of details in the database. Currently, just for the sake of it really, I serialize the whole return object and store it in the database in a related table.

The idea being, that when I display my information, I have all the details to hand should I need them. The problem arises in that the pricing information is always in a sub object.

[ConvertedAdjustmentAmount] => __PHP_Incomplete_Class Object
    (
        [__PHP_Incomplete_Class_Name] => eBayAmountType
        [_] => 0
        [currencyID] => USD
    )

As you can see when I unserialize my object, my cunning plan falls foul of the Incomplete class problem. I have checked the following question, without success.

http://stackoverflow.com/questions/965611/forcing-access-to-php-incomplete-class-object-properties

The main issue lies, as far as I can see, in that the price class is stored in the Ebay api, so how do I recreate it?

I have been reading this page, http://uk3.php.net/manual/en/function.unserialize.php and trying to figure out, unserialize_callback_func which I can't figure out either, so any help would be appreciated!

A: 

What piece of code defines the class is irrelevant. What matters is that the code be loaded at the time you deserialize the object. As long as you've loaded the eBay API (in the same way you would when fetching a new object) before you try deserializing an existing one, it should work fine.

VoteyDisciple
Thanks, so simple! I just included my Ebay soap client and it worked great :)
DavidYell
A: 

If you don't have access to the libraries then you'll need to deal with the information prior to serializing your data. You can convert your object to a stdClass or shuffle it off to a class of your choice (one that you control, presumably). Depending on how much information you have - or how deep the information is - you could also store it as an array.

Inkspeak