NOTE: For Version 3 of the AWS SDK for PHP, please see the V3 User Guide and V3 API Reference.

# Class AbstractCommand

Command object to handle preparing and processing client requests and responses of the requests

  Guzzle\Common\Collection implements ArrayAccess, IteratorAggregate, Countable, Guzzle\Common\ToArrayInterface
  Guzzle\Service\Command\AbstractCommand implements Guzzle\Service\Command\CommandInterface

### Direct known subclasses

`Guzzle\Service\Command\ClosureCommand`, `Guzzle\Service\Command\OperationCommand`

### Indirect known subclasses

`Aws\Common\Command\JsonCommand`, `Aws\Common\Command\QueryCommand`, `Aws\S3\Command\S3Command`

Abstract
Namespace: Guzzle\Service\Command
Located at Guzzle/Service/Command/AbstractCommand.php

## Methods summary

- `public` `__construct ( array|Collection $parameters = array(), Guzzle\Service\Description\OperationInterface $operation = null )`
- `public` `__clone ( )`

  Custom clone behavior

- `public` `__invoke ( )`

  Execute the command in the same manner as calling a function

- `public` `getName ( )`

  Get the short form name of the command

- `public` `getOperation ( )`

  Get the API command information about the command

- `public` `setOnComplete ( mixed $callable )`

  Specify a callable to execute when the command completes

- `public` `execute ( )`

  Execute the command and return the result

- `public` `getClient ( )`

  Get the client object that will execute the command

- `public` `setClient ( Guzzle\Service\ClientInterface $client )`

  Set the client object that will execute the command

- `public` `getRequest ( )`

  Get the request object associated with the command

- `public` `getResponse ( )`

  Get the response object associated with the command

- `public` `getResult ( )`

  Get the result of the command

- `public` `setResult ( mixed $result )`

  Set the result of the command

- `public` `isPrepared ( )`

  Returns TRUE if the command has been prepared for executing

- `public` `isExecuted ( )`

  Returns TRUE if the command has been executed

- `public` `prepare ( )`

  Prepare the command for executing and create a request object.

- `public` `setValidator ( Guzzle\Service\Description\ValidatorInterface $validator )`

  Set the validator used to validate and prepare command parameters and nested JSON schemas. If no validator is set, then the command will validate using the default `Guzzle\Service\Description\SchemaValidator`.

- `public` `getRequestHeaders ( )`

  Get the object that manages the request headers that will be set on any outbound requests from the command

- `protected` `init ( )`

  Initialize the command (hook that can be implemented in subclasses)

- `abstract protected` `build ( )`

  Create the request object that will carry out the command

- `protected` `createOperation ( )`

  Hook used to create an operation for concrete commands that are not associated with a service description

- `protected` `process ( )`

  Create the result of the command after the request has been completed. Override this method in subclasses to customize this behavior

- `protected` `validate ( )`

  Validate and prepare the command based on the schema and rules defined by the command's Operation object

- `protected` `getValidator ( )`

  Get the validator used to prepare and validate properties. If no validator has been set on the command, then the default `Guzzle\Service\Description\SchemaValidator` will be used.

- `public` `getValidationErrors ( )`

  Get array of any validation errors If no validator has been set then return false

## Methods detail

# `public`
`__construct( array|`Guzzle\Common\Collection` $parameters = array(), `Guzzle\Service\Description\OperationInterface` $operation = null )`

#### Parameters

$parameters
  `array|`Guzzle\Common\Collection``
  $parameters Collection of parameters to set on the command
$operation
  ``Guzzle\Service\Description\OperationInterface``
  $operation Command definition from description

#### Overrides

`Guzzle\Common\Collection::__construct`
# `public`
`__clone( )`

Custom clone behavior

# `public mixed`
`__invoke( )`

Execute the command in the same manner as calling a function

#### Returns

`mixed`
Returns the result of `Guzzle\Service\Command\AbstractCommand::execute()`
# `public string`
`getName( )`

Get the short form name of the command

#### Returns

`string`

#### Implementation of

`Guzzle\Service\Command\CommandInterface::getName()`
# `public `Guzzle\Service\Description\OperationInterface``
`getOperation( )`

Get the API command information about the command

#### Returns

``Guzzle\Service\Description\OperationInterface``

#### Implementation of

`Guzzle\Service\Command\CommandInterface::getOperation()`
# `public `Guzzle\Service\Command\AbstractCommand``
`setOnComplete( mixed $callable )`

Specify a callable to execute when the command completes

#### Parameters

$callable
  `mixed`
  $callable Callable to execute when the command completes. The callable must accept a `Guzzle\Service\Command\CommandInterface` object as the only argument.

#### Returns

``Guzzle\Service\Command\AbstractCommand``

#### Throws

``Guzzle\Common\Exception\InvalidArgumentException``

#### Implementation of

`Guzzle\Service\Command\CommandInterface::setOnComplete()`
# `public mixed`
`execute( )`

Execute the command and return the result

#### Returns

`mixed`
Returns the result of `Guzzle\Service\Command\CommandInterface::execute()`

#### Throws

``Guzzle\Service\Exception\CommandException``
if a client has not been associated with the command

#### Implementation of

`Guzzle\Service\Command\CommandInterface::execute()`
# `public `Guzzle\Service\ClientInterface`|null`
`getClient( )`

Get the client object that will execute the command

#### Returns

``Guzzle\Service\ClientInterface`|null`

#### Implementation of

`Guzzle\Service\Command\CommandInterface::getClient()`
# `public `Guzzle\Service\Command\AbstractCommand``
`setClient( `Guzzle\Service\ClientInterface` $client )`

Set the client object that will execute the command

#### Parameters

$client
  ``Guzzle\Service\ClientInterface``
  $client The client object that will execute the command

#### Returns

``Guzzle\Service\Command\AbstractCommand``

#### Implementation of

`Guzzle\Service\Command\CommandInterface::setClient()`
# `public `Guzzle\Http\Message\RequestInterface``
`getRequest( )`

Get the request object associated with the command

#### Returns

``Guzzle\Http\Message\RequestInterface``

#### Throws

``Guzzle\Service\Exception\CommandException``
if the command has not been executed

#### Implementation of

`Guzzle\Service\Command\CommandInterface::getRequest()`
# `public Response`
`getResponse( )`

Get the response object associated with the command

#### Returns

`Response`

#### Throws

``Guzzle\Service\Exception\CommandException``
if the command has not been executed

#### Implementation of

`Guzzle\Service\Command\CommandInterface::getResponse()`
# `public Response`
`getResult( )`

Get the result of the command

#### Returns

`Response`
By default, commands return a Response object unless overridden in a subclass

#### Throws

``Guzzle\Service\Exception\CommandException``
if the command has not been executed

#### Implementation of

`Guzzle\Service\Command\CommandInterface::getResult()`
# `public `Guzzle\Service\Command\AbstractCommand``
`setResult( mixed $result )`

Set the result of the command

#### Parameters

$result
  `mixed`
  $result Result to set

#### Returns

``Guzzle\Service\Command\AbstractCommand``

#### Implementation of

`Guzzle\Service\Command\CommandInterface::setResult()`
# `public boolean`
`isPrepared( )`

Returns TRUE if the command has been prepared for executing

#### Returns

`boolean`

#### Implementation of

`Guzzle\Service\Command\CommandInterface::isPrepared()`
# `public boolean`
`isExecuted( )`

Returns TRUE if the command has been executed

#### Returns

`boolean`

#### Implementation of

`Guzzle\Service\Command\CommandInterface::isExecuted()`
# `public `Guzzle\Http\Message\RequestInterface``
`prepare( )`

Prepare the command for executing and create a request object.

#### Returns

``Guzzle\Http\Message\RequestInterface``
Returns the generated request

#### Throws

``Guzzle\Service\Exception\CommandException``
if a client object has not been set previously or in the prepare()

#### Implementation of

`Guzzle\Service\Command\CommandInterface::prepare()`
# `public `Guzzle\Service\Command\AbstractCommand``
`setValidator( `Guzzle\Service\Description\ValidatorInterface` $validator )`

Set the validator used to validate and prepare command parameters and nested JSON schemas. If no validator is set, then the command will validate using the default `Guzzle\Service\Description\SchemaValidator`.

#### Parameters

$validator
  ``Guzzle\Service\Description\ValidatorInterface``
  $validator Validator used to prepare and validate properties against a JSON schema

#### Returns

``Guzzle\Service\Command\AbstractCommand``
# `public `Guzzle\Common\Collection``
`getRequestHeaders( )`

Get the object that manages the request headers that will be set on any outbound requests from the command

#### Returns

``Guzzle\Common\Collection``

#### Implementation of

`Guzzle\Service\Command\CommandInterface::getRequestHeaders()`
# `protected`
`init( )`

Initialize the command (hook that can be implemented in subclasses)

# `abstract protected`
`build( )`

Create the request object that will carry out the command

# `protected `Guzzle\Service\Description\OperationInterface``
`createOperation( )`

Hook used to create an operation for concrete commands that are not associated with a service description

#### Returns

``Guzzle\Service\Description\OperationInterface``
# `protected`
`process( )`

Create the result of the command after the request has been completed. Override this method in subclasses to customize this behavior

# `protected`
`validate( )`

Validate and prepare the command based on the schema and rules defined by the command's Operation object

#### Throws

``Guzzle\Service\Exception\ValidationException``
when validation errors occur
# `protected `Guzzle\Service\Description\ValidatorInterface``
`getValidator( )`

Get the validator used to prepare and validate properties. If no validator has been set on the command, then the default `Guzzle\Service\Description\SchemaValidator` will be used.

#### Returns

``Guzzle\Service\Description\ValidatorInterface``
# `public`
`getValidationErrors( )`

Get array of any validation errors If no validator has been set then return false

### Methods inherited from Guzzle\Common\Collection

`add()`, `clear()`, `count()`, `filter()`, `fromConfig()`, `get()`, `getAll()`, `getIterator()`, `getKeys()`, `getPath()`, `hasKey()`, `hasValue()`, `keySearch()`, `map()`, `merge()`, `offsetExists()`, `offsetGet()`, `offsetSet()`, `offsetUnset()`, `overwriteWith()`, `remove()`, `replace()`, `set()`, `setPath()`, `toArray()`

### Magic methods summary

## Constants summary

`string` | `HEADERS_OPTION` | `'command.headers'` | #
`string` | `ON_COMPLETE` | `'command.on_complete'` | #
`string` | `RESPONSE_BODY` | `'command.response_body'` | #
`string` | `REQUEST_OPTIONS` | `'command.request_options'` | #
`string` | `HIDDEN_PARAMS` | `'command.hidden_params'` | #
`string` | `DISABLE_VALIDATION` | `'command.disable_validation'` | #
`string` | `RESPONSE_PROCESSING` | `'command.response_processing'` | #
`string` | `TYPE_RAW` | `'raw'` | #
`string` | `TYPE_MODEL` | `'model'` | #
`string` | `TYPE_NO_TRANSLATION` | `'no_translation'` | #

## Properties summary

`protected `Guzzle\Service\ClientInterface`` | $client | # Client object used to execute the command
`protected `Guzzle\Http\Message\RequestInterface`` | $request | # The request object associated with the command
`protected mixed` | $result | # The result of the command
`protected `Guzzle\Service\Description\OperationInterface`` | $operation | # API information about the command
`protected mixed` | $onComplete | # callable
`protected `Guzzle\Service\Description\ValidatorInterface`` | $validator | # Validator used to prepare and validate properties against a JSON schema

### Properties inherited from Guzzle\Common\Collection

`$data`