如何将先前定义的对象传递给函数参数?
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
所以 $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
是什么
谢谢。
我建议像这样调用 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 了解更多信息。
我正在尝试从 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
所以 $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
是什么
谢谢。
我建议像这样调用 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 了解更多信息。