1
我正在使用PHP 5.5,並試圖使用適用於PHP的AWS-SDK。PHP中的命名空間和靜態方法
這裏是我的代碼看起來像:
require_once 'AWS/aws.phar';
use Aws\DynamoDb\DynamoDbClient;
DynamoDBAccessLayer::init();
class DynamoDBAccessLayer {
public static $client;
public static $AWSCredentials = array(
'region' => 'us-east-1',
'key' => 'KEY',
'secret' => 'SECRET'
);
public static function init() {
self::$client = DynamoDbClient::factory(self::$AWSCredentials);
}
}
所有我想在這一點上做的是啓動客戶端,但也有命名空間相關的問題,下面的錯誤被拋出時的init()執行:
PHP Fatal error: Class 'Aws\DynamoDb\DynamoDbClient' not found in....
我所知道的原因,這是一個名字空間的問題是,下面的代碼不正確沒有錯誤分配客戶端:
require_once 'AWS/aws.phar';
use Aws\DynamoDb\DynamoDbClient;
DynamoDBAccessLayer::$client = Aws\DynamoDb\DynamoDbClient::factory(DynamoDbAccessLayer::$AWSCredentials);
class DynamoDBAccessLayer {
public static $client;
public static $AWSCredentials = array(
'region' => 'us-east-1',
'key' => 'KEY',
'secret' => 'SECRET'
);
}
因此,PHP可以訪問這些靜態方法之外的DynamoDbClient類,但無法在其中訪問它。
如何讓Aws \ DynamoDb \ DynamoDbClient在init()靜態方法內可訪問?
你可以嘗試在你的類中使用'\ Aws \ DynamoDb \ DynamoDbClient :: factory()'(注意反斜槓)。 –
我嘗試過,同樣的錯誤 – Yasser1984
我有同樣的問題,你有沒有得到解決?我這樣做:需要'./aws-autoloader.php';使用聲明之前,它的工作。 @ Yasser1984 –