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

How to pass object previously defined into function parameters?

我正在尝试从 File 2 中的 File 1 调用函数并且引用有效。但我想要 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是什么

谢谢。

我建议像这样调用 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 了解更多信息。