簡體   English   中英

在Codeigniter中找不到類“ WriteRequestBatch”錯誤-AWS PHP PHP

[英]Class 'WriteRequestBatch' not found error in Codeigniter - AWS php SDK

抱歉,我是AWS SDK的新手,但是我需要使用WriteRequestBatch將25條記錄的批量添加到一個表中。

我正在使用Codeigniter並嘗試使用以下代碼進行操作:

function new_save($data_set)
    {
    $tableName = 'my-table';
    $dynamodb = $this->aws_sdk->dynamo_db();
    $data_to_save = $this->create_dynamo_data($data_set);
    $putBatch = WriteRequestBatch::factory($dynamodb);
    foreach ($data_to_save as $record)
    {
        $record = Item::fromArray($item);
        $putBatch->add(new PutRequest($record, $tableName));
    }
    $putBatch->flush();
}

但它因以下錯誤而停止:

PHP Fatal error:  Class 'WriteRequestBatch' not found in (...)

我剛剛開始使用新的SDK,並且能夠獲取數據和更新表吞吐量設置等,僅此任務對我完全失敗:-(

順便說一句-這是我在這里的第一篇文章,我嘗試在Google等上搜索答案,但只找到了我已經使用過的相同示例代碼。

我創建了一個像這樣的庫:

require('/var/www/xx-aslan/aws_sdk_ver2/aws-autoloader.php');
use Aws\Common\Aws;

class Aws_sdk
{
// Create a service locator using a configuration file
private static $aws = array(
        'key'    => '***********',
        'secret' => '******',
        'region' => '****'
);

function aws()
{
    return Aws::factory(self::$aws);
}

function dynamo_db()
{
    $aws = $this->aws();
    return $aws->get('DynamoDb');
}

然后將其加載到其中模型new_save()為的模型中:

$this->load->library('aws_sdk');

有人可以幫我嗎? 我知道這可能是一個非常新手的問題,對不起:-(

提前致謝! 卡西亞

如果更改無效:

$this->load->library('aws_sdk');

$this->load->library('Aws_sdk');

正如我在評論中建議的那樣,嘗試像這樣調用它:

$putBatch = aws_sdk->WriteRequestBatch::factory($dynamodb);

每次使用aws_sdk庫時,都將執行此操作。

希望這可以幫助。

AWS開發工具包或CI都不是問題。 這些類具有名稱空間,因此您必須導入它們以使其可用。

在引用它們的同一文件中,在文件頂部/附近(在任何類或函數聲明之外)添加use語句。

<?php

// ...

use Aws\DynamoDb\Model\BatchRequest\PutRequest;
use Aws\DynamoDb\Model\BatchRequest\WriteRequestBatch;
use Aws\DynamoDb\Model\Item;

// ...

function new_save($data_set)
{
    // ...
    $putBatch = WriteRequestBatch::factory($dynamodb);
    // ...
}

// ...

如果您想更好地了解如何使用命名空間代碼,應該考慮閱讀PHP手冊中命名空間部分

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM