cmosh / 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-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模型的包兼容,只要它被配置为触发适当的savedupdated事件。目前它已与基础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);