Database
 sql >> Database >  >> RDS >> Database

Integra Firebase con PHP per la comunicazione in tempo reale

La gestione e le transazioni dei dati in tempo reale sono l'ultima modalità di comunicazione al giorno d'oggi. Le persone hanno bisogno di un rapido flusso di dati durante l'utilizzo di applicazioni mobili e web. Ci sono molti servizi disponibili su Internet per la creazione di database e sistemi di comunicazione in tempo reale. Ad esempio Pusher, Onesignal e Firebase di Google sono strumenti famosi per questo. In precedenza, hai imparato come integrare Firebase in Laravel e hai trattato i seguenti argomenti:

  1. Configura Firebase e genera chiavi API.
  2. Integra in Laravel

In questo esempio di PHP Firebase, ti farò un piccolo riassunto dell'articolo precedente e ti mostrerò come Integrare Firebase in PHP 7.x, creando delle semplici funzioni CRUD con le quali puoi eseguire la manipolazione del database.

Integra Firebase con PHP
  • Un piccolo riassunto di Firebase
  • A cosa serve Firebase?
  • Firebase CONTRO MySQL
  • Pro e contro di Firebase
  • Configurazione di Firebase nella console
  • Imposta il server PHP su Cloudways
  • Integra PHP con Firebase
  • Crea connessione con Firebase
  • Crea classe utente in Users.php
  • Collega Firebase con il modulo di contatto PHP
  • Le ultime parole

Un piccolo riassunto di Firebase

Firebase è un servizio di comunicazione in tempo reale che fornisce flusso di dati in tempo reale per chat, applicazioni mobili e web. Fornisce numerosi servizi in tempo reale tra cui messaggistica cloud, sistemi di autenticazione, database PHP Firebase, sistemi di notifica, archiviazione e hosting Firebase, rendendo la sua piattaforma una pletora completa di strumenti e servizi per lo sviluppo di app di alta qualità.

In questo articolo tratterò brevi dettagli del database Firebase. In realtà, Firebase fornisce un database PHP in tempo reale e un back-end come servizio. Il servizio fornisce agli sviluppatori un'API che consente la sincronizzazione dei dati delle applicazioni tra i client archiviati sul cloud Firebase. Ciò elimina la necessità di qualsiasi sistema di database relazionale sul tuo server di hosting come MySQL e altri.

A cosa serve Firebase?

Quando l'utente desidera creare, generare o recuperare dati a un ritmo molto veloce dal database, i servizi in tempo reale di Firebase consentono loro di eseguire facilmente operazioni come lo streaming live, la funzione di chat e altro ancora. È uno strumento perfetto per le applicazioni che dispongono di database di grandi dimensioni come Lyft, Shazam, Alibaba ecc.

Alcune delle principali caratteristiche di Firebase sono:

  • Nessun denaro extra per il server back-end
  • Visualizzazione rapida dei dati nel server
  • NoSQL, il che significa che è più veloce
  • Analisi
  • Hosting sicuro e veloce
  • Kit di apprendimento automatico
  • Servizio di autenticazione per la sicurezza degli utenti
  • Archiviazione su cloud
  • Rapida sincronizzazione dei dati

Meno problemi. Più sviluppo.

Mettiamo a prova di futuro i tuoi requisiti di hosting. Ti concentri sulla creazione delle tue applicazioni.

Inizia gratis

Firebase CONTRO MySQL

Firebase è letteralmente diverso dai database tradizionali come MySQL e memorizza i dati sotto forma di documenti. Questi documenti possono essere manipolati in tempo reale su supporti multipiattaforma. MySQL è un database relazionale che funziona con il concetto chiave->valore e crea relazioni con diversi set di dati.

Queste relazioni vengono quindi utilizzate per le transazioni di dati. MySQL non ha il concetto di transizione dei dati in tempo reale e richiede così tanto lavoro per creare API REST.

D'altra parte il database Firebase fornisce diverse piattaforme come Android, iOS e Web per la creazione di API rapide. Fondamentalmente Firebase è una struttura di dati gerarchica, ovvero è proprio come un albero JSON nel cloud.

Firebase ha il concetto di chiavi, che sono i nomi dei nodi in cui memorizzi i dati. Potresti in qualche modo confrontarli con le chiavi primarie di un database relazionale, ma non esiste il concetto di chiave esterna gestita in esso.


Ottieni subito il tuo manuale VueJS

Inserisci semplicemente il tuo indirizzo email e ottieni il link per il download nella tua Posta in arrivo.

Grazie

Il tuo ebook è in arrivo nella tua casella di posta.


Pro e contro di Firebase

Di recente mi sono imbattuto nella domanda di Stack Exchange sui pro e i contro di Firebase e li spiega molto bene.

Pro

  • Se la tua app viene eseguita su un DB centralizzato e viene aggiornata da molti utenti, è più che in grado di gestire gli aggiornamenti dei dati in tempo reale tra i dispositivi.
  • Memorizzato nel cloud, quindi facilmente disponibile ovunque.
  • API multipiattaforma (se stai utilizzando questo DB con un'app)
  • Ospitano i dati – Ciò significa che se stai archiviando molti dati, non devi preoccuparti dell'hardware.

Contro:

  • A meno che la tua app non venga eseguita su un database centralizzato aggiornato da una grande quantità di utenti, è un grosso sovraccarico.
  • Il formato di archiviazione è completamente diverso da quello di SQL (Firebase utilizza JSON). Quindi non saresti in grado di migrare così facilmente.
  • Gli strumenti di reporting non sono affatto vicini a quelli dell'SQL standard.
  • Costi:limitati a 50 connessioni e 100 MB di spazio di archiviazione.
  • Non ospiti i dati, lo fa Firebase. A seconda del server che ottieni, ultimamente la visualizzazione del tempo sembra essere molto disturbata.

Configurazione di Firebase nella console

Come accennato in precedenza, l'articolo precedente ha coperto tutti i passaggi per configurare il database Firebase nella console, puoi semplicemente seguire quell'articolo per un rapido riepilogo. I punti che devi seguire per configurare Firebase sono:

  1. Crea un progetto in Firebase
  2. Imposta regole di lettura e scrittura per gli utenti
  3. Sposta su utente e autorizzazioni per generare chiavi API
  4. Scarica il file Json segreto e salvalo all'interno del tuo progetto

Ora sei pronto per integrare PHP con Firebase.

Imposta il server PHP su Cloudways

Poiché Cloudways fornisce già la versione PHP 7.x sul suo hosting per i siti Web PHP, devi solo registrarti e avviare un server e tutto il resto viene fornito già pronto sulla piattaforma. L'applicazione verrà configurata insieme al server e potrai accedervi tramite l'URL nella pagina dei dettagli di accesso

Devi occuparti di alcune cose prima di eseguire Firebase sui server PHP, devi avere PHP>=versione 7.0 disponibile con estensione PHP mbstring.

Potrebbe piacerti anche: Come ospitare PHP su Amazon AWS EC2

Integra PHP con Firebase

Firebase ha una fantastica API che supporta l'implementazione in diverse lingue. Per l'utilizzo di PHP con Firebase, fornisce un pacchetto PHP completo che puoi integrare per lavorare con Firebase. In questa applicazione userò kreait/firebase-php consigliato anche da Firebase.

Il modo consigliato per installare Firebase Admin SDK è con Composer. Composer è uno strumento di gestione delle dipendenze per PHP che ti consente di dichiarare le dipendenze di cui il tuo progetto ha bisogno e di installarle nel tuo progetto.

composer require kreait/firebase-php ^4.17.0

In alternativa, puoi specificare Firebase Admin SDK come dipendenza nel file composer.json esistente del tuo progetto:

{

  "require": {

     "kreait/firebase-php": "^4.17.0"

  }

}

Dopo l'installazione, è necessario richiedere il caricatore automatico di Composer:

<?php

require __DIR__.'/vendor/autoload.php';

Crea connessione con Firebase

Una volta completata l'installazione del pacchetto e aggiunto l'autolader al file PHP, puoi quindi creare una connessione con Firebase utilizzando il file segreto scaricato dalla console. Devi passare l'URL di quel file nel metodo ServiceAccount::fromJsonFile(). In secondo luogo, trova l'URL dell'applicazione Firebase.

<?php

require __DIR__.'/vendor/autoload.php';



use Kreait\Firebase\Factory;

use Kreait\Firebase\ServiceAccount;



// This assumes that you have placed the Firebase credentials in the same directory

// as this PHP file.

$serviceAccount = ServiceAccount::fromJsonFile(__DIR__ . '/secret/php-firebase-7f39e-c654ccd32aba.json');



$firebase = (new Factory)

   ->withServiceAccount($serviceAccount)

   ->withDatabaseUri('https://my-project.firebaseio.com')

   ->create();



$database = $firebase->getDatabase();

Ora in questo momento in cui esegui var_dump($database); vedrai l'oggetto database completo restituito da Firebase sullo schermo del tuo browser.

Crea classe utente in Users.php

La prossima cosa che farò è la creazione di un nuovo file chiamato Users.php e dichiarare una classe User in esso. La classe conterrà un costruttore in cui creerò una connessione di PHP con l'API Firebase e la inizializzerò. Dopodiché otterrò il database creato in Firebase.

public function __construct(){

       $acc = ServiceAccount::fromJsonFile(__DIR__ . '/secret/php-firebase-7f39e-c654ccd32aba.json');

       $firebase = (new Factory)->withServiceAccount($acc)->create();

       $this->database = $firebase->getDatabase();

   }

Ora per creare funzioni PHP CRUD per manipolare il database, creerò metodi separati per ogni caso d'uso. Ma prima creiamo altre due proprietà al di fuori del costruttore che contiene il nome del database

protected $database;

   protected $dbname = 'users';

Ora creiamo un metodo get() per recuperare i dati. Conterrà l'ID utente per recuperare il record utente specifico. Il metodo verificherà anche se l'ID utente non è disponibile o impostato, in caso contrario restituirà false. Mentre se trova l'ID da impostare correttamente, recupererà il valore con successo.

public function get(int $userID = NULL){    

       if (empty($userID) || !isset($userID)) { return FALSE; }

       if ($this->database->getReference($this->dbname)->getSnapshot()->hasChild($userID)){

           return $this->database->getReference($this->dbname)->getChild($userID)->getValue();

       } else {

           return FALSE;

       }

   }

All'interno del metodo insert(), passerò l'array di dati perché può contenere dati singoli o multipli. Mentre se i dati sono già disponibili per lo specifico userID, aggiornerà quello esistente.

public function insert(array $data) {

       if (empty($data) || !isset($data)) { return FALSE; }

       foreach ($data as $key => $value){

           $this->database->getReference()->getChild($this->dbname)->getChild($key)->set($value);

       }

       return TRUE;

   }

Ora creerò una funzione delete() che avrà userID come parametro. L'ID verrà convalidato se è impostato, quindi il metodo remove() rimuoverà i dati.

public function delete(int $userID) {

       if (empty($userID) || !isset($userID)) { return FALSE; }

       if ($this->database->getReference($this->dbname)->getSnapshot()->hasChild($userID)){

           $this->database->getReference($this->dbname)->getChild($userID)->remove();

           return TRUE;

       } else {

           return FALSE;

       }

   }

La classe Utente completa sarà la seguente:

<?php

require_once './vendor/autoload.php';



use Kreait\Firebase\Factory;

use Kreait\Firebase\ServiceAccount;



class Users {

   protected $database;

   protected $dbname = 'users';

   public function __construct(){

       $acc = ServiceAccount::fromJsonFile(__DIR__ . '/secret/php-firebase-7f39e-c654ccd32aba.json');

       $firebase = (new Factory)->withServiceAccount($acc)->create();

       $this->database = $firebase->getDatabase();

   }



   public function get(int $userID = NULL){    

       if (empty($userID) || !isset($userID)) { return FALSE; }

       if ($this->database->getReference($this->dbname)->getSnapshot()->hasChild($userID)){

           return $this->database->getReference($this->dbname)->getChild($userID)->getValue();

       } else {

           return FALSE;

       }

   }



   public function insert(array $data) {

       if (empty($data) || !isset($data)) { return FALSE; }

       foreach ($data as $key => $value){

           $this->database->getReference()->getChild($this->dbname)->getChild($key)->set($value);

       }

       return TRUE;

   }



   public function delete(int $userID) {

       if (empty($userID) || !isset($userID)) { return FALSE; }

       if ($this->database->getReference($this->dbname)->getSnapshot()->hasChild($userID)){

           $this->database->getReference($this->dbname)->getChild($userID)->remove();

           return TRUE;

       } else {

           return FALSE;

       }

   }

}



?>

Ora testiamo la classe. Prova ad applicare metodi e controlla che il database Firebase si aggiorni o meno. Per prima cosa inizializza la classe:

$users = new Users();

Ora inseriamo alcuni dati tramite il metodo insert():

$users = new Users();

//var_dump($users->insert([

//    '1' => 'John',

//    '2' => 'Doe',

//    '3' => 'Smith'

//]));

Allo stesso modo puoi ottenere o eliminare dati come questo:

var_dump($users->get(1));

var_dump($users->delete(2));

Quindi puoi vedere come ho creato un'applicazione CRUD di base usando PHP e Firebase creando una semplice classe. Ovviamente puoi estenderlo e creare qualcosa di eccitante secondo i requisiti.


Meno problemi. Più sviluppo.

Mettiamo a prova di futuro i tuoi requisiti di hosting. Ti concentri sulla creazione delle tue applicazioni.

Inizia gratis

Collega Firebase con il modulo di contatto PHP

Il modulo di contatto è un componente essenziale di qualsiasi sito Web in quanto raccoglie i messaggi e le domande degli utenti. Creiamo un semplice modulo di contatto PHP e colleghiamolo a Firebase per ricevere messaggi. Questo comprenderà la codifica di base in quanto ti darà solo un'idea di come collegarlo. Userò la stessa classe User.php e la sua funzione insert():

Il codice di progettazione del modulo di contatto sarà il seguente:

<!DOCTYPE html>

<html>



<head>

   <title>Page Title</title>

</head>



<body>



   <link href="https://netdna.bootstrapcdn.com/bootstrap/3.1.0/css/bootstrap.min.css" rel="stylesheet" id="bootstrap-css">

   <script src="//netdna.bootstrapcdn.com/bootstrap/3.1.0/js/bootstrap.min.js"></script>

   <script src="//code.jquery.com/jquery-1.11.1.min.js"></script>

   <!-- Include the above in your HEAD tag -->



   <div class="container">

       <div class="row">

           <div class="col-md-6 col-md-offset-3">

               <div class="well well-sm">

                   <form class="form-horizontal" action="" method="post">

                       <fieldset>

                           <legend class="text-center">Contact us</legend>



                           <!-- Name input-->

                           <div class="form-group">

                               <label class="col-md-3 control-label" for="name">Name</label>

                               <div class="col-md-9">

                                   <input id="name" name="name" type="text" placeholder="Your name" class="form-control">

                               </div>

                           </div>



                           <!-- Email input-->

                           <div class="form-group">

                               <label class="col-md-3 control-label" for="email">Your E-mail</label>

                               <div class="col-md-9">

                                   <input id="email" name="email" type="text" placeholder="Your email" class="form-control">

                               </div>

                           </div>



                           <!-- Message body -->

                           <div class="form-group">

                               <label class="col-md-3 control-label" for="message">Your message</label>

                               <div class="col-md-9">

                                   <textarea class="form-control" id="message" name="message" placeholder="Please enter your message here..." rows="5"></textarea>

                               </div>

                           </div>



                           <!-- Form actions -->

                           <div class="form-group">

                               <div class="col-md-12 text-right">

                                   <button type="submit" name="submit" class="btn btn-primary btn-lg">Submit</button>

                               </div>

                           </div>

                       </fieldset>

                   </form>

               </div>

           </div>

       </div>

   </div>



</body>



</html>

Ora nel file PHP puoi inizializzare gli spazi dei nomi e la classe User. Dopodiché, cattura semplicemente gli input e inviali al metodo insert() di Firebase. Anche questo è un codice di base, puoi estenderlo secondo i tuoi requisiti e le regole di convalida:

< ? php



require __DIR__.

'/vendor/autoload.php';

require 'Users.php';


use Kreait\ Firebase\ Factory;

use Kreait\ Firebase\ ServiceAccount;


$users = new Users();


if (isset($_POST['submit'])) {


   $name = $_POST['name'];

   $email = $_POST['email'];

   $message = $_POST['message'];


   $users - > insert([

       'name' => $name,

       'email' => $email,

       'message' => $message

   ]);



}

Parole finali

La tecnologia si sta evolvendo a un ritmo rapido. Per essere competitivo e rimanere in gara, devi aggiornarti con quelli che cambiano. Allo stesso modo, anche i database si evolvono frequentemente e oggi possiamo vedere molti servizi che forniscono database in tempo reale, elaborando i dati in un attimo.

In questo esempio di Firebase PHP, ti ho mostrato come integrare PHP con Firebase e collegarlo a un modulo di contatto con una classe semplice. Una volta stabilita la connessione, puoi creare casi d'uso più complessi per utilizzare i servizi Firebase. In seguito scriverò di più su Firebase con PHP.

Domande frequenti

D:Posso usare Firebase con PHP?

R:Sì, Firebase fornisce un'API completa per l'integrazione della piattaforma con i tuoi progetti PHP.

D:Posso ospitare PHP su Firebase?

R:No, Firebase supporta solo l'hosting statico e, di conseguenza, non puoi ospitare script PHP su Firebase.

D:Come posso ottenere dati da un database Firebase utilizzando PHP?

Per ottenere i dati di Firebase, devi andare nella cartella del progetto ed eseguire il comando:

php composer.phar require kreait/firebase-php

Successivamente, un nuovo index.php nella cartella del progetto e aggiungi la seguente riga all'inizio di index.php:

require DIR.'/vendor/autoload.php';

Quindi, crea un file JSON nella cartella

Modifica index.php e crea una connessione al database.