cmosh / laravel-firebase
Laravel(4.2+)的Firebase端口
Requires
- php: >=5.4.0
- firebase/php-jwt: @dev
- guzzlehttp/guzzle: 6.1.*
This package is not auto-updated.
Last update: 2024-09-20 20:26:21 UTC
README
Laravel(4.2+)的Firebase端口
##配置
通过composer安装。如果您将minimum-stability
设置为stable
,则应添加@beta
或@dev
以使用php-jwt
库(由Firebase管理的依赖项,用于生成JSON Web Token)。
将以下行添加到您的composer.json
文件中,并运行composer update
{
"require": {
"cmosh/laravel-firebase": "dev-master"
}
}
然后将服务提供者和外观添加到config/app.php
'Cmosh\LaravelFirebase\LaravelFirebaseServiceProvider',
...
'Firebase' => 'Cmosh\LaravelFirebase\LaravelFirebaseFacade'
访问令牌
最后,您应该在config/database.php
数组中配置您的Firebase连接。您可以这样做
####简单访问令牌
'firebase' => array( 'host' => 'https://<you>.firebaseio.com/', 'token' => '<yoursecret>', 'timeout' => 10, 'sync' => false, // OPTIONAL: auto-sync all Eloquent models with Firebase? )
####高级:请求JWT
这接受Firebase安全规则允许的任何标准选项,并将生成JSON Web Token以进行更细粒度的认证(受认证安全规则和过期时间的影响)。
'firebase' => array( 'host' => 'https://servicerunner.firebaseio.com/', 'token' => [ 'secret' => '<yoursecret>', 'options' => [ 'auth' => [ 'email' => 'example@yoursite.com' ] ], 'data' => [] ], 'timeout' => 10, 'sync' => false, // OPTIONAL: auto-sync all Eloquent models with Firebase? )
FirebaseClient实例作为单例加载到IoC容器中,包含用于与Firebase交互的Guzzle实例。
入门指南
执行简单的GET请求
// Returns: (Array) of data items Firebase::get('/my/path'); // Returns: (\Illuminate\Database\Eloquent\Collection) Eloquent collection of Eloquent models Firebase::get('/my/path', 'ValidEloquentModelClass'); // Returns: (\Illuminate\Database\Eloquent\Model) Single Eloquent model // Conditions: $SomeModelInstance must inherit from Eloquent at some point, and have a (id, _id, or $id) property Firebase::get($SomeModelInstance); // Returns: (Array) Firebase response Firebase::set('/my/path', $data); // Returns: (Array) Firebase response Firebase::push('/my/path', $data); // Returns: (Array) Firebase response Firebase::delete('/my/path');
模型同步
默认情况下,此包将保持您的Eloquent模型与Firebase同步。这意味着每当eloquent.updated: *
触发时,模型将被推送到Firebase。
此包将自动在模型上查找'id'、'_id'和'$id'变量,以便Firebase路径被规范化如下
// Eloquent model: User // Firebase location: /users/{user::id} $User = new User(['name' => 'Julian']); $User->save(); // Pushed to firebase $Copy = Firebase::get('/users/'.$User->id, 'User'); // === copy of $User $Copy = Firebase::get($User); // === copy of $User
要禁用此功能,请确保在您的数据库.connections.firebase配置数组中设置了'sync' => false
。
此功能与任何覆盖默认Eloquent模型的包兼容,只要它被配置为触发适当的saved
和updated
事件。目前它已与基础Illuminate...Model
以及Jenssegers MongoDB Eloquent Model进行了测试
####单独同步模型
如果您想添加白名单属性,在模型更新时自动推送到Firebase,您可以通过将白名单属性添加到任何受支持的模型来实现。
此操作不受配置数组中(自动)sync
属性的约束。如果找到$firebase
白名单数组,则将在每次更新事件中发布包含的字段。
class User extends Eloquent { ... public $firebase = ['public_property','name','created']; // These properties are pushed to firebase every time the model is updated }
##高级使用
#####手动创建令牌
$FirebaseTokenGenerator = new Cmosh\LaravelFirebase\FirebaseToken(FIREBASE_SECRET); $Firebase = App::make('firebase'); $token = $FirebaseTokenGenerator->create($data, $options); $Firebase->setToken($token);