lucasvieirawerner/laravel-firebase

该软件包最新版本(0.4)的许可信息不可用。

适用于Laravel(4.2+)的Firebase端口

0.4 2015-10-26 01:57 UTC

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。

只要配置为触发适当的savedupdated事件,它就可以与任何覆盖默认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);