GithubHelp home page GithubHelp logo

firebase-php-2's Introduction

firebase-php

Build Status Scrutinizer Code QualityCode Coverage

Firebase php wrapper for REST API

##Prerequisites

  • PHP >= 5.4
  • Firebase >= 1.1.1
  • Composer (recommended, not required)

Installation using composer (recommended)

Set your projects minimum stability to dev in composer.json. This is caused by the PHP-JWT dependency. After updating the composer.json file, simply execute: composer require eelkevdbos/firebase-php dev-master

##Installation without composer For a vanilla install, the following dependencies should be downloaded:

Loading the dependencies can be achieved by using any PSR-4 autoloader.

Basic Usage

By setting your firebase secret as token, you gain superuser access to firebase.

use Firebase\Firebase;

$fb = Firebase::initialize(YOUR_FIREBASE_URL, YOUR_FIREBASE_SECRET);

//or set your own implementation of the ClientInterface as second parameter of the regular constructor
$fb = new Firebase([ 'base_url' => YOUR_FIREBASE_BASE_URL, 'token' => YOUR_FIREBASE_SECRET ], new GuzzleHttp\Client());

//retrieve a node
$nodeGetContent = $fb->get('/node/path');

//set the content of a node
$nodeSetContent = $fb->set('/node/path', array('data' => 'toset'));

//update the content of a node
$nodeUpdateContent = $fb->update('/node/path', array('data' => 'toupdate'));

//delete a node
$nodeDeleteContent = $fb->delete('/node/path');

//push a new item to a node
$nodePushContent = $fb->push('/node/path', array('name' => 'item on list'));

Advanced Usage

For more finegrained authentication, have a look at the security rules. Using the token generator allows you to make use of the authentication services supplied by Firebase.

use Firebase\Firebase;
use Firebase\Auth\TokenGenerator;

$tokenGenerator = new TokenGenerator(YOUR_FIREBASE_SECRET);

$token = $tokenGenerator->generateToken(['email' => '[email protected]'])

$fb = Firebase::initialize(YOUR_FIREBASE_BASE_URL, $token);

The above snippet of php interacts with the following security rules:

{
  "rules": {
    ".read": "auth.email == '[email protected]'"
    ".write": "auth.email == '[email protected]'"
  }
}

And will allow the snippet read-access to all of the nodes, but not write-access.

##Concurrent requests Execution of concurrent requests can be achieved with the same syntax as regular requests. Simply wrap them in a Closure and call the closure via the batch method and you are all set.

use Firebase\Firebase;

$fb = Firebase::initialize(YOUR_FIREBASE_BASE_URL, YOUR_FIREBASE_SECRET);

$requests = $fb->batch(function ($client) {
    for($i = 0; $i < 100; $i++) {
        $client->push('list', $i);
    }
});

$pool = new GuzzleHttp\Pool($fb->getClient(), $requests);
$pool->wait();

Integration

At the moment of writing, integration for Laravel 4.* is supported. A service provider and a facade class are supplied. Installation is done in 2 simple steps after the general installation steps:

  1. edit app/config/app.php to add the service provider and the facade class
    'providers' => array(
      ...
      'Firebase\Integration\Laravel\FirebaseServiceProvider'
    )
    
    'aliases' => array(
      ...
      'Firebase' => 'Firebase\Integration\Laravel\Firebase'
    )
  1. edit app/config/services.php (supplied by default from L4.2) to add token and base_url settings
    'firebase' => array(
      'base_url' => YOUR_FIREBASE_BASE_URL,
      'token' => YOUR_FIREBASE_SECRET
    )

##Eventing

The library supports the EventEmitter pattern. The event-emitter is attached to the Firebase class. Events currently available:

  • RequestsBatchedEvent

firebase-php-2's People

Contributors

eelkevdbos avatar michaeldim avatar

Watchers

 avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.