Wsdl.php 1.9 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061
  1. <?php
  2. /**
  3. * Copyright © Magento, Inc. All rights reserved.
  4. * See COPYING.txt for license details.
  5. */
  6. namespace Magento\Webapi\Model\Soap;
  7. use DOMElement;
  8. use Magento\Webapi\Model\Soap\Wsdl\ComplexTypeStrategy;
  9. /**
  10. * Magento-specific WSDL builder.
  11. */
  12. class Wsdl extends \Zend\Soap\Wsdl
  13. {
  14. /**
  15. * Constructor.
  16. * Save URI for targetNamespace generation.
  17. *
  18. * @param string $name
  19. * @param string|\Zend\Uri\Uri $uri
  20. * @param ComplexTypeStrategy $strategy
  21. */
  22. public function __construct($name, $uri, ComplexTypeStrategy $strategy)
  23. {
  24. parent::__construct($name, $uri, $strategy);
  25. }
  26. /**
  27. * Add an operation to port type.
  28. *
  29. * @param DOMElement $portType
  30. * @param string $name Operation name
  31. * @param string|bool $input Input Message
  32. * @param string|bool $output Output Message
  33. * @param string|bool|array $fault Message name OR array('message' => ..., 'name' => ...)
  34. * @return object The new operation's XML_Tree_Node
  35. */
  36. public function addPortOperation($portType, $name, $input = false, $output = false, $fault = false)
  37. {
  38. $operation = parent::addPortOperation($portType, $name, $input, $output, false);
  39. if (is_array($fault)) {
  40. $isMessageValid = isset(
  41. $fault['message']
  42. ) && is_string(
  43. $fault['message']
  44. ) && strlen(
  45. trim($fault['message'])
  46. );
  47. $isNameValid = isset($fault['name']) && is_string($fault['name']) && strlen(trim($fault['name']));
  48. if ($isNameValid && $isMessageValid) {
  49. $node = $this->toDomDocument()->createElement('fault');
  50. $node->setAttribute('name', $fault['name']);
  51. $node->setAttribute('message', $fault['message']);
  52. $operation->appendChild($node);
  53. }
  54. }
  55. return $operation;
  56. }
  57. }