我正在开发一个需要使用Amazon WebServices
库的解决方案。他们的库在所有项目中使用命名空间以及我如何在PHP
开发中成为初学者我需要你的帮助才能更好地理解它是如何工作的。
这是我的班级:
<?php
// include('AmazonSNS\vendor\aws\aws-sdk-php\src\Sdk.php');
// include('AmazonSNS\model\CustomCredentials.php');
use Aws\Sdk;
class AwsSns {
public $sns;
public $platformApplicationArn;
public function __construct(){
$sdk = new Sdk([
'version' => 'latest',
'debug' => false,
'retries' => 3,
'credentials' => [
'key' => CustomCredentials::SNS_KEY,
'secret' => CustomCredentials::SNS_SECRET
],
'Sns' => [
'region' => 'sa-east-1'
]
]);
$this->sns = $sdk->createSns();
$this->generatePlatformApplicationArn();
}
private function generatePlatformApplicationArn( ){
$result = $this->sns->createPlatformApplication( array(
// Name is required
'Name' => 'GCMPedro',
// Platform is required
'Platform' => 'GCM',
// Attributes is required
'Attributes' => array(
// Associative array of custom 'String' key names
'PlatformCredential' => "AIzaSyBYjNaE7ShuLc2y4mf53bVwszDt8XA-YTI" //__API_KEY__
),
));
$this->platformApplicationArn = $result->get('PlatformApplicationArn');
Util::generateFile('PlataformApplicationArn: '.$this->platformApplicationArn, 'a');
}
public function getEndpointArn( $token ){
$result = $this->sns->createPlatformEndpoint(array(
// PlatformApplicationArn is required
'PlatformApplicationArn' => $this->platformApplicationArn,
// Token is required
'Token' => $token,
//'CustomUserData' => 'string',
'Attributes' => array(
// Associative array of custom 'String' key names
'Enabled' => 'true'
),
));
Util::generateFile('EndpointArn: '.$result->get('EndpointArn'), 'a');
return( $result->get('EndpointArn') );
}
}
?>
1)关于名称空间,要使用它,我是否包含或不包含.php
文件?
观察:
当我不使用include时,php会返回以下错误消息:
致命错误:在C:\ Program Files中找不到类'Aws \ Sdk' 第14行的(x86)\ VertrigoServ \ www \ AmazonSNS \ extra \ AwsSns.php
你的注意力我非常感谢你。
答案 0 :(得分:1)
如果您尚未设置PSR-0或PSR-4等自动加载功能(如使用常见的PHP框架)或其他内容,则必需文件不在被调用时自动加载/包含。我猜您没有设置这样的自动加载功能,因此您可以添加include
关键字。
在official documentation of PHP中,您可以阅读有关命名空间的所有内容。
本手册的Citate。 2个好处:
在PHP世界中,命名空间旨在解决库和应用程序的作者在创建可重用的代码元素(如类或函数)时遇到的两个问题:
- 您创建的代码与内部PHP类/函数/常量或第三方类/函数/常量之间的名称冲突。
- 能够别名(或缩短)Extra_Long_Names,旨在缓解第一个问题,提高源代码的可读性。
醇>