hipsterjazzbo/laraparse

将您的 Laravel 5 项目与 Parse (parse.com) 集成

v0.1.6 2016-04-28 20:28 UTC

README

LaraParse 为使用 Laravel 5+ 与 Parse (parse.com) 集成提供了一个优雅的解决方案。

具体来说,它

  • 处理 Parse SDK 的注册和加载
  • 提供了一个认证提供者,您可以使用它通过 Parse 登录和注册
  • 提供了一个系统,可以轻松创建和注册子类,包括 artisan 生成器和简单的配置
  • 提供了用于仓库的生成器和基类

未来计划包括

  • 自动生成子类*
  • 为子类生成 Docblock*

* 依赖于 Parse 发布的 schema API

安装

首先,在您的 composer.json 中包含 LaraParse

composer require hipsterjazzbo/laraparse

然后,在您的 config/app.php 中加载服务提供者

'LaraParse\ParseServiceProvider'

您还需要发布配置,以便提供您的密钥

php artisan vendor:publish  --provider="LaraParse\ParseServiceProvider" --tag="config"

使用方法

对于一般使用,您可以像平时一样调用 Parse SDK 类和方法。有关更多信息,请参阅 ParsePlatform/parse-php-sdk

$query = new ParseQuery('Class');
$query->equalTo('key', 'value');
$object = $query->first();

认证提供者

LaraParse 为 Laravel 内置的认证系统提供了一个与 Parse 一起工作的驱动程序。要使用它,只需前往您的 config/auth.php 并将 'driver' 键更新为 'parse'

然后,您可以使用 Auth::attempt() 和其他类似方法。

子类

子类可以使与 Parse 一起工作变得容易得多。它们让您免于总是处理通用的 ParseObjects,并提供了一个地方来添加辅助方法,甚至可以使用 docblocks 在 IDE 中获得列自动完成。

您可以通过以下方式生成一个子类

php artisan parse:subclass ClassName

假设 ClassName 与 Parse 中的类相同,但如果不同,您可以使用 --parse-class=ParseClass 选项手动设置。

子类将在 app/ParseClasses 中创建。

然后,您需要在您的 config/parse.php 文件中注册该子类。

注意:如果您想子类化 Parse 的 User 类,应该扩展 LaraParse\Subclasses\User,以确保认证驱动程序仍然有效。

类型转换

生成的子类使用 \LaraParse\Traits\CastsParseProperties 特性,这有助于您。它会

  • 将所有 Date 列转换为 \Carbon\Carbon 实例
  • 允许您以属性的方式访问内置列(例如,$class->objectId 而不是 $class->getObjectId()
  • 允许您在子类中指定一个与 Parse 列同名的方法,当访问该列时将调用该方法。

仓库

LaraParse 包含了一些命令和基类,以帮助设置用于 Parse 的仓库。

要生成一个新的仓库,您可以使用 artisan 命令

php artisan parse:repository ClassName

与子类一样,假设 ClassName 与 Parse 中的类相同,但如果不同,您可以使用 --parse-class=ParseClass 选项手动设置。

默认情况下,此命令将生成一个合约和一个扩展抽象基类的实现,提供了一个功能齐全的仓库,可以立即使用。

如果您只想生成一个实现,您可以使用 --which="implementation"

请参阅 \LaraParse\Repositories\Contracts\ParseRepository 了解可用的方法。

如果您想将实现绑定到合约,您可以在 parse.php 配置中的 repositories 数组中添加(有关详细信息,请参阅 https://laravel.net.cn/docs/5.0/container#binding-interfaces-to-implementations

使用主密钥

如果您需要使用主密钥进行查询,您可以这样做

$repository = new ClassRepository();
$repository->userMasterKey(true)->all();

谢谢

特别感谢 @gfoscoParsePlatform/parse-php-sdk 上的帮助,他处理了几项对实现此包必需的 PR。