j42/laravel-firebase

此包的最新版本(0.4)没有可用的许可信息。

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

0.4 2015-10-26 01:57 UTC

This package is not auto-updated.

Last update: 2024-09-24 01:30:57 UTC


README

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

##配置

通过 composer 安装。如果您已将 minimum-stability 设置为 stable,则应添加 @beta@dev 以使用 php-jwt 库(由 Firebase 管理的依赖项,用于生成 JSON Web 令牌)。

将以下行添加到您的 composer.json 中,并运行 composer update

{
  "require": {
    "j42/laravel-firebase": "dev-master"
  }
}

然后请将服务提供者和外观添加到 config/app.php

'J42\LaravelFirebase\LaravelFirebaseServiceProvider',

...

'Firebase'		  => 'J42\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 令牌以进行更细粒度的身份验证(受身份验证安全规则和过期时间限制)。

'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

要禁用此功能,请确保在数据库连接配置数组中 '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 J42\LaravelFirebase\FirebaseToken(FIREBASE_SECRET);
$Firebase = App::make('firebase');

$token = $FirebaseTokenGenerator->create($data, $options);

$Firebase->setToken($token);