在 PHP 中使用 Google Cloud 时如何避免重复造轮子
想象一下这个场景:您需要快速为 Cloud Storage 添加文件上传功能,或者通过 Vision API 设置文本识别。打开 Google 官方文档后,信息如潮水般涌来。客户端库、服务账号认证、无尽的 JSON 配置。脑海中只有一个念头:"我只是需要上传一个文件,真的需要这么复杂吗?"
实际上,并非如此。Google 有一个名为 php-docs-samples 的代码库,它通常隐藏在主要 SDK 的阴影中,但正是它节省了数小时(有时甚至数天)的搜索时间。这是一个巨大的集合——而且是好的那种——为 PHP 开发者提供了大量现成的代码片段。
这个代码库里有什么
简而言之,这是一个为所有可想象的 Google Cloud Platform (GCP) 服务提供可工作示例的集合。这里没有复杂的抽象或构建"完美框架"的尝试,只有解决特定任务的核心代码。
这个项目自 2012 年就已存在。经过这段时间,它已经发展到令人瞩目的规模。在里面,你会发现以下示例:
- 数据存储(Cloud Storage、Firestore、Spanner)
- 机器学习(Vision、Translation、Natural Language)
- 基础设施(Compute Engine、Cloud Functions)
- 队列和消息传递(Pub/Sub)
这在实践中如何提供帮助
官方 SDK 的主要问题在于它们的通用性和复杂性。在 php-docs-samples 中,方法不同:"这里有一个函数,这里是调用它的方法。"
处理图像和神经网络
无需自己摸索如何正确打包图像发送给 Vision API,直接查看 vision 文件夹即可。里面包含人脸检测、文本识别或徽标搜索的示例。复制方法,替换你的 API 密钥,它就能工作。
轻松使用 Cloud Functions
如果你用 PHP 编写 Cloud Functions,就会知道本地调试相当麻烦。代码库中有一个 functions 部分,展示了如何处理 HTTP 请求或响应 Cloud Storage 中的事件。这能帮助你理解调用签名,而无需频繁部署到云端来验证每个改动。
数据库操作
由于认证的特殊性,使用 PHP 连接 Google Cloud Spanner 或 Firestore 并非易事。示例清晰地分离了各个部分:创建实例的位置、如何描述数据模式,以及如何执行事务。
技术层面
所有代码都使用官方库 google/cloud-* 以纯 PHP 编写。这意味着你仍然需要通过 Composer 添加所需的包。
一个有趣的点是:代码库结构与 Google Cloud 文档结构相对应。如果你在 Google Docs 中阅读文章并看到 PHP 代码块,它很可能就是从这里提取的。这让你可以将代码库作为离线参考使用。
在本地运行任何示例,通常只需:
- 克隆代码库。
- 导航到所需的目录(例如,
storage/)。 - 运行
composer install。 - 配置指向服务账号密钥文件的环境变量
GOOGLE_APPLICATION_CREDENTIALS。
这值得学习吗
我经常遇到开发者试图仅通过阅读 API 参考文档"从零开始"实现云集成。这是一条痛苦的道路。php-docs-samples 本质上是一张允许你在考试中使用的 cheat sheet。
谁将从这个项目中获益最多:
- 刚刚从本地服务器迁移到 GCP 且不想花一周时间阅读文档的人。
- 需要使用 Google AI 服务快速构建原型的人。
- 用 PHP 编写自动化脚本的系统管理员。
当然,这个项目并不完美。有些示例可能过于简化,错误处理最少,架构简化为单个文件。但对于学习目的和快速启动来说,这是可用的最佳资源。
如果你计划使用 Google Cloud,只需将这个代码库加入书签或 fork 一份。迟早你会需要一个如何正确向 Pub/Sub 发送消息的示例,你会很高兴自己不必在 Stack Overflow 上搜索它。
相关项目