<?php



/**

 * AWeberResponse

 *

 * Base class for objects that represent a response from the AWeberAPI. 

 * Responses will exist as one of the two AWeberResponse subclasses:

 *  - AWeberEntry - a single instance of an AWeber resource

 *  - AWeberCollection - a collection of AWeber resources

 * @uses AWeberAPIBase

 * @package 

 * @version $id$

 */

class AWeberResponse extends AWeberAPIBase {



    public $adapter = false;

    public $data = array();

    public $_dynamicData = array();



    /**

     * __construct

     *

     * Creates a new AWeberRespones

     *

     * @param mixed $response       Data returned by the API servers

     * @param mixed $url            URL we hit to get the data

     * @param mixed $adapter        OAuth adapter used for future interactions

     * @access public

     * @return void

     */

    public function __construct($response, $url, $adapter) {

        $this->adapter = $adapter;

        $this->url     = $url;

        $this->data    = $response;

    }



    /**

     * __set

     * 

     * Manual re-implementation of __set, allows sub classes to access

     * the default behavior by using the parent:: format.

     *

     * @param mixed $key        Key of the attr being set

     * @param mixed $value      Value being set to the attr

     * @access public

     */

    public function __set($key, $value) {

        $this->{$key} = $value;

    }



    /**

     * __get

     *

     * PHP "MagicMethod" to allow for dynamic objects.  Defers first to the 

     * data in $this->data.

     *

     * @param String $value  Name of the attribute requested

     * @access public

     * @return mixed

     */

    public function __get($value) {

        if (in_array($value, $this->_privateData)) {

            return null;

        }

        if (array_key_exists($value, $this->data)) {

            return $this->data[$value];

        }

        if ($value == 'type') return $this->_type();

    }



}





