如何将先前定义的对象传递给函数参数?

时间:2015-07-28 14:18:59

标签: php amazon-web-services amazon-dynamodb

我正在尝试从File 1中的File 2调用函数,并且引用有效。但我希望File 1中的值传递给从File 2调用的函数。例如:

function namer ($t = "hello") {
  return $t." everyone";
}
echo namer();
echo namer(null);
echo namer("There's");

// RETURNS
hello everyone
 everyone
There's everyone

所以$tFile 1中的一个值,我可以将其包含在返回File 2的值中。

我正在使用AWS DynamoDB并在File 1中创建我希望在File 2中引用的客户端。我使用的是最新的AWS PHP SDK - 3.2.1

示例:

//  FILE 1

require 'aws/aws-autoloader.php';
date_default_timezone_set('America/New_York');

use Aws\DynamoDb\DynamoDbClient;

$client = DynamoDbClient::factory(array(
  'profile' => 'default',
  'region'  => 'us-east-1',
  'version' => 'latest'
));

function showResult($c = $client, $tableName) {
  $result = $c->describeTable(array(
    'TableName' => $tableName
  ));
  return $result;
}
//  FILE 2

include 'file1.php';

echo showResult('myTable');

// This returns a Parse Error

我也尝试过:

function showResult($tableName) {
    $result = $client->describeTable(array(
        'TableName' => $tableName
    ));
    return $result;
}
// This returns 'Call to a member function describeTable() on a non-object'

我认为这是因为函数内部并不知道$client是什么。

谢谢。

1 个答案:

答案 0 :(得分:1)

我建议调用getClient,如:

function getClient () {
    $client = DynamoDbClient::factory(array(
        'profile' => 'default',
        'region'  => 'us-east-1',
        'version' => 'latest'
    ));
    return $client;
}

通过这种方式,您可以将以下所有功能称为:

$result = getClient()->describeTable(array(
    'TableName' => $tableName
));

答案

FILE 1

<?php
    require 'aws/aws-autoloader.php';
    date_default_timezone_set('America/New_York');

    use Aws\DynamoDb\DynamoDbClient;

    function getClient () {
        $client = DynamoDbClient::factory(array(
            'profile' => 'default',
            'region'  => 'us-east-1',
            'version' => 'latest'
        ));
        return $client;
    }

    function showResult($tableName) {
        $result = getClient()->describeTable(array(
            'TableName' => $tableName
        ));
        return $result;
    }
?>

FILE 2

<?php
    include 'file1.php';

    echo showResult('[Your_Table]');
?>

参考Creating a Client了解更多信息。