我正在尝试从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
所以$t
是File 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
是什么。
谢谢。
答案 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了解更多信息。