【发布时间】:2021-07-08 16:04:09
【问题描述】:
注意:我正在这个问题中安装AWS PHP SDK api connection,尽管我的问题完全是关于 CakePHP 结构的。我使用的任何 AWS 术语都应该非常简单,如果您不熟悉 AWS,则仅用于演示我遇到的 Cake 问题。
我目前正在为我维护的一个名为 Files 的 CakePHP 应用程序编写一些新表/实体。它们代表存储在 Amazon S3 中的存储桶上的图像。 Files 包含一个名为“Key”的值,它或多或少是 Cake 中我的实体所代表的文件的文件名,与 S3 上的文件名匹配。实体如下所示:
<?php
class File extends Cake\ORM\Entity
{
protected $_accessible = [
'file_name' => true,
'key' => true,
'unique_id' => true,
'email_task_message_id' => true,
'email_task_message' => true,
];
}
我正在集成 AWS PHP SDK,它允许我将存储桶的名称和文件名(上面称为键,以匹配 AWS 术语)交换为指向 S3 上资源的 pre-signed url。这个预签名的 url 需要显示在任何文件实体上。
我想知道我应该在哪里将 AWS PHP SDK 调用集成到 Cake 模型结构中?
我想在文件实体(上图)上作为Cake Virtual Field 执行此操作。但是一个查询中实际上可能包含数百个文件,因此据我所知,这将导致虚拟字段重新连接到每个文件的 API。因此,我需要某种方法在生成时将包含 AWS PHP SDK 连接的变量的已实例化版本注入到实体中。
或者通过对表示文件实体 FilesTable 的表/行为的初始化调用以某种方式修改它是否更有意义?
提前致谢!
【问题讨论】:
标签: php amazon-web-services amazon-s3 cakephp cakephp-3.0