lucasvieirawerner /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-21 21:34:49 UTC
README
适用于Laravel(4.2+)的Firebase端口
##配置
通过composer安装。如果你将minimum-stability
设置为stable
,则应添加一个@beta
或@dev
,以便使用php-jwt
库(由firebase管理的依赖项,用于生成JSON Web Token)。
将以下行添加到你的composer.json
文件中,并运行composer update
{
"require": {
"lucasvieirawerner/laravel-firebase": "dev-master"
}
}
然后,将服务提供者和外观添加到config/app.php
'lucasvieirawerner\LaravelFirebase\LaravelFirebaseServiceProvider',
...
'Firebase' => 'lucasvieirawerner\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容器中,其中包含一个Guzzle实例,用于与Firebase交互。
入门指南
执行简单的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
要禁用此功能,请确保在数据库连接配置数组中将'.sync'设置为false。
只要配置为触发适当的saved
和updated
事件,它就可以与任何覆盖默认Eloquent模型的软件包一起使用。目前,它已与基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 lucasvieirawerner\LaravelFirebase\FirebaseToken(FIREBASE_SECRET); $Firebase = App::make('firebase'); $token = $FirebaseTokenGenerator->create($data, $options); $Firebase->setToken($token);