amazonservices api 抽象类 Class Abstraction

Posted rsapaper

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了amazonservices api 抽象类 Class Abstraction相关的知识,希望对你有一定的参考价值。

http://php.net/manual/zh/language.oop5.abstract.php

 

MWSOrdersPHPClientLibrary-2013-09-01._V533357711_\\src\\MarketplaceWebServiceOrders\\Model.php

<?php
/*******************************************************************************
 * Copyright 2009-2017 Amazon Services. All Rights Reserved.
 * Licensed under the Apache License, Version 2.0 (the "License");
 *
 * You may not use this file except in compliance with the License.
 * You may obtain a copy of the License at: http://aws.amazon.com/apache2.0
 * This file is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR
 * CONDITIONS OF ANY KIND, either express or implied. See the License for the
 * specific language governing permissions and limitations under the License.
 *******************************************************************************
 * PHP Version 5
 * @category Amazon
 * @package  Marketplace Web Service Orders
 * @version  2013-09-01
 * Library Version: 2017-02-22
 * Generated: Thu Mar 02 12:41:08 UTC 2017
 */

/**
 * MarketplaceWebServiceOrders_Model - base class for all model classes
 */
abstract class MarketplaceWebServiceOrders_Model
{

    /** @var array */
    protected $_fields = array();

    /**
     * Construct new model class
     *
     * @param mixed $data - DOMElement or Associative Array to construct from.
     */
    public function __construct($data = null)
    {
        if (!is_null($data)) {
            if ($this->_isAssociativeArray($data)) {
                $this->_fromAssociativeArray($data);
            } elseif ($this->_isDOMElement($data)) {
                $this->_fromDOMElement($data);
            } else {
                throw new Exception ("Unable to construct from provided data. Please be sure to pass associative array or DOMElement");
            }
        }
    }

    /**
     * Support for virtual properties getters.
     *
     * Virtual property call example:
     *
     *   $action->Property
     *
     * Direct getter(preferred):
     *
     *   $action->getProperty()
     *
     * @param string $propertyName name of the property
     */
    public function __get($propertyName)
    {
        $getter = "get$propertyName";
        return $this->$getter();
    }

    /**
     * Support for virtual properties setters.
     *
     * Virtual property call example:
     *
     *   $action->Property  = \'ABC\'
     *
     * Direct setter (preferred):
     *
     *   $action->setProperty(\'ABC\')
     *
     * @param string $propertyName name of the property
     */
    public function __set($propertyName, $propertyValue)
    {
        $setter = "set$propertyName";
        $this->$setter($propertyValue);
        return $this;
    }

    /**
     * Construct from DOMElement
     *
     * This function iterates over object fields and queries XML
     * for corresponding tag value. If query succeeds, value extracted
     * from xml, and field value properly constructed based on field type.
     *
     * Field types defined as arrays always constructed as arrays,
     * even if XML contains a single element - to make sure that
     * data structure is predictable, and no is_array checks are
     * required.
     *
     * @param DOMElement $dom XML element to construct from
     */
    private function _fromDOMElement(DOMElement $dom)
    {
        $xpath = new DOMXPath($dom->ownerDocument);

        foreach ($this->_fields as $fieldName => $field) {
            $fieldType = $field[\'FieldType\'];
            if (is_array($fieldType)) {
                if ($fieldType[0] == "object") {
                    $elements = $dom->childNodes;
                    for ($i = 0; $i < $elements->length; $i++) {
                        $this->_fields[$fieldName][\'FieldValue\'][] = $elements->item($i);
                    }
                } else if ($this->_isComplexType($fieldType[0])) {
                    if (isset($field[\'ListMemberName\'])) {
                        $memberName = $field[\'ListMemberName\'];
                        $elements = $xpath->query("./*[local-name()=\'$fieldName\']/*[local-name()=\'$memberName\']", $dom);
                    } else {
                        $elements = $xpath->query("./*[local-name()=\'$fieldName\']", $dom);
                    }
                    if ($elements->length >= 1) {
                        require_once(dirname(__FILE__) . DIRECTORY_SEPARATOR . \'..\' . DIRECTORY_SEPARATOR . str_replace(\'_\', DIRECTORY_SEPARATOR, $fieldType[0]) . ".php");
                        foreach ($elements as $element) {
                            $this->_fields[$fieldName][\'FieldValue\'][] = new $fieldType[0]($element);
                        }
                    }
                } else {
                    if (isset($field[\'ListMemberName\'])) {
                        $memberName = $field[\'ListMemberName\'];
                        $elements = $xpath->query("./*[local-name()=\'$fieldName\']/*[local-name()=\'$memberName\']", $dom);
                    } else {
                        $elements = $xpath->query("./*[local-name()=\'$fieldName\']", $dom);
                    }
                    if ($elements->length >= 1) {
                        foreach ($elements as $element) {
                            $text = $xpath->query(\'./text()\', $element);
                            $this->_fields[$fieldName][\'FieldValue\'][] = $text->item(0)->data;
                        }
                    }
                }
            } else {
                if ($this->_isComplexType($fieldType)) {
                    $elements = $xpath->query("./*[local-name()=\'$fieldName\']", $dom);
                    if ($elements->length == 1) {
                        require_once(dirname(__FILE__) . DIRECTORY_SEPARATOR . \'..\' . DIRECTORY_SEPARATOR . str_replace(\'_\', DIRECTORY_SEPARATOR, $fieldType) . ".php");
                        $this->_fields[$fieldName][\'FieldValue\'] = new $fieldType($elements->item(0));
                    }
                } else {
                    if ($fieldType[0] == "@") {
                        $attribute = $xpath->query("./@$fieldName", $dom);
                        if ($attribute->length == 1) {
                            $this->_fields[$fieldName][\'FieldValue\'] = $attribute->item(0)->nodeValue;
                            if (isset ($this->_fields[\'Value\'])) {
                                $parentNode = $attribute->item(0)->parentNode;
                                $this->_fields[\'Value\'][\'FieldValue\'] = $parentNode->nodeValue;
                            }
                        }
                    } else {
                        if ($fieldType[0] == ".") {
                            $element = $xpath->query("./text()", $dom);
                        } else {
                            $element = $xpath->query("./*[local-name()=\'$fieldName\']/text()", $dom);
                        }
                        if ($element->length == 1) {
                            $this->_fields[$fieldName][\'FieldValue\'] = $element->item(0)->data;
                        }
                    }

                    $attribute = $xpath->query("./@$fieldName", $dom);
                    if ($attribute->length == 1) {
                        $this->_fields[$fieldName][\'FieldValue\'] = $attribute->item(0)->nodeValue;
                        if (isset ($this->_fields[\'Value\'])) {
                            $parentNode = $attribute->item(0)->parentNode;
                            $this->_fields[\'Value\'][\'FieldValue\'] = $parentNode->nodeValue;
                        }
                    }

                }
            }
        }
    }


    /**
     * Construct from Associative Array
     *
     *
     * @param array $array associative array to construct from
     */
    private function _fromAssociativeArray(array $array)
    {
        foreach ($this->_fields as $fieldName => $field) {
            $fieldType = $field[\'FieldType\'];
            if (is_array($fieldType)) {
                if ($this->_isComplexType($fieldType[0])) {
                    if (array_key_exists($fieldName, $array)) {
                        $elements = $array[$fieldName];
                        if (!$this->_isNumericArray($elements)) {
                            $elements = array($elements);
                        }
                        if (count($elements) >= 1) {
                            require_once(dirname(__FILE__) . DIRECTORY_SEPARATOR . \'..\' . DIRECTORY_SEPARATOR . str_replace(\'_\', DIRECTORY_SEPARATOR, $fieldType[0]) . ".php");

                            foreach ($elements as $element) {
                                $this->_fields[$fieldName][\'FieldValue\'][] = new $fieldType[0]($element);
                            }
                        }
                    }
                } else {
                    if (array_key_exists($fieldName, $array)) {
                        $elements = $array[$fieldName];
                        if (!$this->_isNumericArray($elements)) {
                            $elements = array($elements);
                        }
                        if (count($elements) >= 1) {
                            foreach ($elements as $element) {
                                $this->_fields[$fieldName][\'FieldValue\'][] = $element;
                            }
                        }
                    }
                }
            } else {
                if ($this->_isComplexType($fieldType)) {
                    if (array_key_exists($fieldName, $array)) {
                        require_once(dirname(__FILE__) . DIRECTORY_SEPARATOR . \'..\' . DIRECTORY_SEPARATOR . str_replace(\'_\', DIRECTORY_SEPARATOR, $fieldType) . ".php");
                        $this->_fields[$fieldName][\'FieldValue\'] = new $fieldType($array[$fieldName]);
                    }
                } else {
                    if (array_key_exists($fieldName, $array)) {
                        $this->_fields[$fieldName][\'FieldValue\'] = $array[$fieldName];
                    }
                }
            }
        }
    }

    /**
     * Convert to query parameters suitable for POSTing.
     * @return array of query parameters
     */
    public function toQueryParameterArray()
    {
        return $this->_toQueryParameterArray("");
    }

    protected function _toQueryParameterArray($prefix)
    {
        $arr = array();
        foreach ($this->_fields as $fieldName => $fieldAttrs) {
            $fieldType = $fieldAttrs[\'FieldType\'];
            $fieldValue = $fieldAttrs[\'FieldValue\'];
            $newPrefix = $prefix . $fieldName . \'.\';
            $currentArr = $this->__toQueryParameterArray($newPrefix, $fieldType, $fieldValue, $fieldAttrs);
            $arr = array_merge($arr, $currentArr);
        }
        return $arr;
    }

    private function __toQueryParameterArray($prefix, $fieldType, $fieldValue, $fieldAttrs)
    {
        $arr = array();
        if (is_array($fieldType)) {
            if (isset($fieldAttrs[\'ListMemberName\'])) {
                $listMemberName = $fieldAttrs[\'ListMemberName\'];
                $itemPrefix = $prefix . $listMemberName . \'.\';
            } else {
                $itemPrefix = $prefix;
            }

            for ($i = 1; $i <= count($fieldValue); $i++) {
                $indexedPrefix = $itemPrefix . $i . \'.\';
                $memberType = $fieldType[0];
                $arr = array_merge($arr,
                    $this->__toQueryParameterArray($indexedPrefix,
                        $memberType, $fieldValue[$i - 1], null));
            }

        } else if ($this->_isComplexType($fieldType)) {
            // Struct
            if (isset($fieldValue)) {
                $arr = array_merge($arr, $fieldValue->_toQueryParameterArray($prefix));
            }
        } else {
            // Primitive
            if ($fieldValue !== null && $fieldValue !== "") {
                if ($fieldType == \'bool\') {
                    $fieldValue = ($fieldValue) ? \'true\' : \'false\';
                }
                $arr[rtrim($prefix, \'.\')] = $fieldValue;
            }
        }
        return $arr;
    }

    /**
     * XML fragment representation of this object
     * Note, name of the root determined by caller
     * This fragment returns inner fields representation only
     * @return string XML fragment for this object
     */
    protected function _toXMLFragment()
    {
        $xml = "";
        foreach ($this->_fields as $fieldName => $field) {
            $fieldValue = $field[\'FieldValue\'];
            if (!is_null($fieldValue) && $field[\'FieldType\'] != "MarketplaceWebServiceOrders_Model_ResponseHeaderMetadata") {
                $fieldType = $field[\'FieldType\'];
                if (is_array($fieldType)) {
                    if ($fieldType[0] == "object") {
                        foreach ($fieldValue as $item) {
                            $newDoc = new DOMDocument();
                            $importedNode = $newDoc->importNode($item, true);
                            $newDoc->appendChild($importedNode);
                            $xmlStr = $newDoc->saveXML();
                            $xmlStr = substr($xmlStr, strpos($xmlStr, "?>") + 2);
                            $xml .= trim($xmlStr);
                        }
                    } else if ($this->_isComplexType($fieldType[0])) {
                        if (isset($field[\'ListMemberName\'])) {
                            $memberName = $field[\'ListMemberName\'];
                            $xml .= "<$fieldName>";
                            foreach ($fieldValue as $item) {
                                $xml .= "<$memberName>";
                                $xml .= $item->_toXMLFragment();
                                $xml .= "</$memberName>";
                            }
                            $xml .= "</$fieldName>";
                        } else {
                            foreach ($fieldValue as $item) {
                                $xml .= "<$fieldName";
                                $xml .= $item->_getAttributes();
                                $xml .= ">";
                                $xml .= $item->_toXMLFragment();
                                $xml .= "</$fieldName>";
                            }
                        }
                    } else {
                        if (isset($field[\'ListMemberName\'])) {
                            $memberName = $field[\'ListMemberName\'];
                            $xml .= "<$fieldName>";
                            foreach ($fieldValue as $item) {
                                $xml .= "<$memberName>";
                                $xml .= $this->_escapeXML($item);
                                $xml .= "</$memberName>";
                            }
                            $xml .= "</$fieldName>";
                        } else {
                            foreach ($fieldValue as $item) {
                                $xml .= "<$fieldName>";
                                $xml .= $this->_escapeXML($item);
                                $xml .= "</$fieldName>";
                            }
                        }
                    }
                } else {
                    if ($this->_isComplexType($fieldType)) {
                        $xml .= "<$fieldName";
                        $xml .= $fieldValue->_getAttributes();
                        $xml .= ">";
                        $xml .= $fieldValue->_toXMLFragment();
                        $xml .= "</$fieldName>";
                    } else if ($fieldType[0] == ".") {
                        $xml .= $this->_escapeXML($fieldValue);
                    } else if ($fieldType[0] != "@") {
                        $xml .= "<$fieldName>";
                        $xml .= $this->_escapeXML($fieldValue);
                        $xml .= "</$fieldName>";
                    }
                }
            }
        }
        return $xml;
    }

    protected function _getAttributes()
    {
        $xml = "";
        foreach ($this->_fields as $fieldName => $field) {
            $fieldValue = $field[\'FieldValue\'];
            if (!is_null($fieldValue)) {
                $fieldType = $field[\'FieldType\'];
                if ($fieldType[0] == "@") {
                    $xml .= " " . $fieldName . "=\'" . $this->_escapeXML($fieldValue) . "\'";
                }
            }
        }
        return $xml;
    }

    /**
     * Escape special XML characters
     * @return string with escaped XML characters
     */
    private function _escapeXML($str)
    {
        $from = array("&", "<", ">", "\'", "\\"");
        $to = array("&amp;", "&lt;", "&gt;", "&#039;", "&quot;");
        return str_replace($from, $to, $str);
    }

    /**
     * Determines if field is complex type
     *
     * @param string $fieldType field type name
     */
    private function _isComplexType($fieldType)
    {
        return preg_match("/^MarketplaceWebServiceOrders_/", $fieldType);
    }

    /**
     * Checks  whether passed variable is an associative array
     *
     * @param mixed $var
     * @return TRUE if passed variable is an associative array
     */
    private function _isAssociativeArray($var)
    {
        return is_array($var) && array_keys($var) !== range(0, sizeof($var) - 1);
    }

    /**
     * Checks  whether passed variable is DOMElement
     *
     * @param mixed $var
     * @return TRUE if passed variable is DOMElement
     */
    private function _isDOMElement($var)
    {
        return $var instanceof DOMElement;
    }

    /**
     * Checks  whether passed variable is numeric array
     *
     * @param mixed $var
     * @return TRUE if passed variable is an numeric array
     */
    protected function _isNumericArray($var)
    {
        if (!is_array($var)) {
            return false;
        }
        $sz = sizeof($var);
        return ($sz === 0 || array_keys($var) === range(0, sizeof($var) - 1));
    }

}

 

 

MWSOrdersPHPClientLibrary-2013-09-01._V533357711_\\src\\MarketplaceWebServiceOrders\\Model\\ListOrderRequest.php

<?php
/*******************************************************************************
 * Copyright 2009-2017 Amazon Services. All Rights Reserved.
 * Licensed under the Apache License, Version 2.0 (the "License");
 *
 * You may not use this file except in compliance with the License.
 * You may obtain a copy of the License at: http://aws.amazon.com/apache2.0
 * This file is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR
 * CONDITIONS OF ANY KIND, either express or implied. See the License for the
 * specific language governing permissions and limitations under the License.
 *******************************************************************************
 * PHP Version 5
 * @category Amazon
 * @package  Marketplace Web Service Orders
 * @version  2013-09-01
 * Library Version: 2017-02-22
 * Generated: Thu Mar 02 12:41:08 UTC 2017
 */

/**
 * @see MarketplaceWebServiceOrders_Model
 */

require_once(dirname(__FILE__) . \'/../Model.php\');


/**
 * MarketplaceWebServiceOrders_Model_ListOrdersRequest
 *
 * Properties:
 * <ul>
 *
 * <li>SellerId: string</li>
 * <li>MWSAuthToken: string</li>
 * <li>CreatedAfter: string</li>
 * <li>CreatedBefore: string</li>
 * <li>LastUpdatedAfter: string</li>
 * <li>LastUpdatedBefore: string</li>
 * <li>OrderStatus: array</li>
 * <li>MarketplaceId: array</li>
 * <li>FulfillmentChannel: array</li>
 * <li>PaymentMethod: array</li>
 * <li>BuyerEmail: string</li>
 * <li>SellerOrderId: string</li>
 * <li>MaxResultsPerPage: int</li>
 * <li>TFMShipmentStatus: array</li>
 *
 * </ul>
 */
class MarketplaceWebServiceOrders_Model_ListOrdersRequest extends MarketplaceWebServiceOrders_Model
{

    public function __construct($data = null)
    {
        $this->_fields = array(
            \'SellerId\' => array(\'FieldValue\' => null, \'FieldType\' => \'string\'),
            \'MWSAuthToken\' => array(\'FieldValue\' => null, \'FieldType\' => \'string\'),
            \'CreatedAfter\' => array(\'FieldValue\' => null, \'FieldType\' => \'string\'),
            \'CreatedBefore\' => array(\'FieldValue\' => null, \'FieldType\' => \'string\'),
            \'LastUpdatedAfter\' => array(\'FieldValue\' => null, \'FieldType\' => \'string\'),
            \'LastUpdatedBefore\' => array(\'FieldValue\' => null, \'FieldType\' => \'string\'),
            \'OrderStatus\' =&

以上是关于amazonservices api 抽象类 Class Abstraction的主要内容,如果未能解决你的问题,请参考以下文章

Tomcat启动报错 com.amazonservices.mws.orders.MarketplaceWebServiceOrdersException: The CreatedBefo

Tomcat启动报错 com.amazonservices.mws.orders.MarketplaceWebServiceOrdersException: The CreatedBefo

Java基础学习笔记十二 类抽象类接口作为方法参数和返回值以及常用API

面向对象----内部类常见API

带有亚马逊产品 API 的 Angular CORS

C ++无法实例化抽象类子