

本文為英文版的機器翻譯版本，如內容有任何歧義或不一致之處，概以英文版為準。

# 在 第 3 適用於 PHP 的 AWS SDK 版的程式碼中設定服務用戶端
<a name="configuring-service-clients-code"></a>

除了[在外部設定服務用戶端](configuring-service-clients-ext.md)之外，您也可以以程式設計方式在程式碼中設定它們。

透過在程式碼中設定服務用戶端，您可以精細控制許多可用的選項。您也可以在外部設定的大多數組態，以程式碼設定。

## 程式碼中的基本組態
<a name="conf-service-client-code-basic"></a>

您可以透過將選項的關聯陣列傳遞給用戶端的建構函式，在程式碼中建立和設定服務用戶端。在下列範例中，關聯陣列只包含用戶端使用的「區域」選項：

```
require 'vendor/autoload.php';

use Aws\S3\S3Client;
use Aws\Exception\AwsException;

//Create an S3Client
$s3 = new S3Client([
    'region' => 'eu-south-2'
]);
```

您可以在[組態選項](guide_configuration.md#cfg-version)主題中找到選用的「版本」參數的相關資訊。

請注意，我們**並未**明確提供登入資料給用戶端。這是因為 SDK 使用[預設登入資料提供者鏈結](guide_credentials_default_chain.md)來尋找登入資料資訊。

中會詳細說明所有一般用戶端組態選項[第 3 適用於 PHP 的 AWS SDK 版的用戶端建構函式選項](guide_configuration.md)。提供給用戶端的選項陣列可能會因您正在建立的用戶端而不同。這些自訂用戶端組態選項的說明如各用戶端的 [API 文件](https://docs.aws.amazon.com/aws-sdk-php/latest/)所述。

## 使用 `Sdk`類別
<a name="sdk-class"></a>

`Aws\Sdk` 類別做為用戶端 factory，用於管理跨多個用戶端的共用組態選項。可以提供給特定用戶端建構函數的許多選項也可以提供給 `Aws\Sdk`類別。這些選項接著會套用到每個用戶端建構函式。

 **匯入** 

```
require 'vendor/autoload.php';

use Aws\S3\S3Client;
use Aws\Exception\AwsException;
```

 **範例程式碼** 

```
// The same options that can be provided to a specific client constructor can also be supplied to the Aws\Sdk class.
// Use the us-west-2 region and latest version of each client.
$sharedConfig = [
    'region' => 'us-west-2'
];
// Create an SDK class used to share configuration across clients.
$sdk = new Aws\Sdk($sharedConfig);
// Create an Amazon S3 client using the shared configuration data.
$client = $sdk->createS3();
```

在所有用戶端共用的選項將放入根層級的金鑰值組。服務特定的組態資料可以在與服務命名空間 （例如，「S3」、「DynamoDb」等） 相同的索引鍵的關聯陣列中提供。

```
$sdk = new Aws\Sdk([
    'region'   => 'us-west-2',
    'DynamoDb' => [
        'region' => 'eu-central-1'
    ]
]);

// Creating an Amazon DynamoDb client will use the "eu-central-1" AWS Region.
$client = $sdk->createDynamoDb();
```

服務特定的組態值為服務特定值與根層級值的整合 (即服務特定值以淺層合併至根層級值)。

**注意**  
如果您正在您的應用程式中使用多個用戶端執行個體，我們強烈建議您使用 `Sdk` 類別。`Sdk` 類別自動為各開發套件用戶端使用相同的 HTTP 用戶端，讓不同服務的開發套件用戶端執行非鎖定 HTTP 請求。如果軟體開發套件用戶端不使用相同的 HTTP 用戶端，則由軟體開發套件用戶端傳送的 HTTP 請求可能會封鎖服務之間的 promise 協同。