hipsterjazzbo / laraparse
将您的 Laravel 5 项目与 Parse (parse.com) 集成
Requires
- laravel/framework: 5.0.*|5.1.*|5.2.*
- nesbot/carbon: ~1.16
- parse/php-sdk: ~1.2.0
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();
谢谢
特别感谢 @gfosco 在 ParsePlatform/parse-php-sdk 上的帮助,他处理了几项对实现此包必需的 PR。