sql >> Base de Datos >  >> RDS >> Database

Integre Firebase con PHP para comunicación en tiempo real

La gestión y las transacciones de datos en tiempo real son el último modo de comunicación en estos días. Las personas necesitan un flujo de datos rápido mientras usan aplicaciones móviles y web. Hay muchos servicios disponibles en Internet para crear bases de datos en tiempo real y sistemas de comunicación. Por ejemplo, Pusher, Onesignal y Firebase de Google son herramientas famosas para eso. Anteriormente, aprendió a integrar Firebase en Laravel y cubrió los siguientes temas:

  1. Configura Firebase y genera claves API.
  2. Integrar en Laravel

En este ejemplo de PHP Firebase, le daré un pequeño resumen del artículo anterior y le mostraré cómo integrar Firebase en PHP 7.x, creando funciones CRUD simples con las que puede realizar la manipulación de la base de datos.

Integrar Firebase con PHP
  • Un pequeño resumen de Firebase
  • ¿Para qué se utiliza Firebase?
  • Firebase VS MySQL
  • Pros y contras de Firebase
  • Configuración de Firebase en Console
  • Configurar el servidor PHP en Cloudways
  • Integre PHP con Firebase
  • Crear conexión con Firebase
  • Crear clase de usuario en Users.php
  • Conecte Firebase con el formulario de contacto de PHP
  • Palabras finales

Un pequeño resumen de Firebase

Firebase es un servicio de comunicación en tiempo real que proporciona un flujo de datos en tiempo real para aplicaciones web, móviles y de chat. Proporciona varios servicios en tiempo real, incluidos la mensajería en la nube, los sistemas de autenticación, la base de datos PHP de Firebase, los sistemas de notificación, el almacenamiento y el alojamiento de Firebase, lo que convierte a su plataforma en una gran cantidad de herramientas y servicios para desarrollar aplicaciones de alta calidad.

En este artículo, cubriré breves detalles de la base de datos de Firebase. En realidad, Firebase proporciona una base de datos PHP en tiempo real y un backend como servicio. El servicio proporciona a los desarrolladores una API que permite la sincronización de datos de aplicaciones entre clientes almacenados en la nube de Firebase. Esto elimina la necesidad de cualquier sistema de base de datos relacional en su servidor de alojamiento como MySQL y otros.

¿Para qué se usa Firebase?

Cuando el usuario desea crear, generar o obtener datos a un ritmo muy rápido desde la base de datos, los servicios en tiempo real de Firebase les brindan facilidad para realizar operaciones como transmisión en vivo, función de chat y más. Es una herramienta perfecta para las aplicaciones que tienen grandes bases de datos como Lyft, Shazam, Alibaba, etc.

Algunas características importantes de Firebase son:

  • No hay dinero extra para el servidor backend
  • Visualización rápida de datos en el servidor
  • NoSQL lo que significa que es más rápido
  • Análisis
  • Alojamiento rápido y seguro
  • Kit de aprendizaje automático
  • Servicio de autenticación para la seguridad del usuario
  • Almacenamiento en la nube
  • Sincronización rápida de datos

Menos molestias. Más desarrollo.

Permítanos preparar sus requisitos de alojamiento para el futuro. Te enfocas en construir tus aplicaciones.

Empezar gratis

Firebase VS MySQL

Firebase es literalmente diferente a las bases de datos tradicionales como MySQL y almacena datos en forma de documentos. Estos documentos se pueden manipular en tiempo real en medios multiplataforma. MySQL es una base de datos relacional que funciona con el concepto clave->valor y crea relaciones con diferentes conjuntos de datos.

Estas relaciones se utilizan luego para transacciones de datos. MySQL carece del concepto de transición de datos en tiempo real y requiere mucho trabajo para crear API REST.

Por otro lado, la base de datos Firebase proporciona diferentes plataformas como Android, iOS y Web para crear API rápidas. Básicamente, Firebase es una estructura de datos jerárquica, es decir, es como un árbol JSON en la nube.

Firebase tiene el concepto de claves, que son los nombres de los nodos en los que almacena datos. De alguna manera podría compararlos con las claves principales de una base de datos relacional, pero no existe el concepto de una clave externa administrada.


Obtenga su manual de VueJS ahora

Simplemente ingrese su dirección de correo electrónico y obtenga el enlace de descarga en su bandeja de entrada.

Gracias

Su libro electrónico está en camino a su bandeja de entrada.


Pros y contras de Firebase

Recientemente me encontré con la pregunta de Stack Exchange sobre las ventajas y desventajas de Firebase y las explica muy bien.

Pros

  • Si su aplicación se ejecuta en una base de datos centralizada y muchos usuarios la actualizan, entonces es más que capaz de manejar las actualizaciones de datos en tiempo real entre dispositivos.
  • Almacenado en la nube para que esté disponible en todas partes.
  • API multiplataforma (si está utilizando esta base de datos con una aplicación)
  • Alojan los datos, lo que significa que si está almacenando una gran cantidad de datos, no tiene que preocuparse por el hardware.

Desventajas:

  • A menos que su aplicación se ejecute en una base de datos centralizada actualizada por una gran cantidad de usuarios, es una gran exageración.
  • El formato de almacenamiento es completamente diferente al de SQL (Firebase usa JSON). Por lo tanto, no podría migrar tan fácilmente.
  • Las herramientas de generación de informes no se parecen en nada a las de SQL estándar.
  • Costos:limitado a 50 conexiones y 100 MB de almacenamiento.
  • No alojas los datos, Firebase lo hace. Dependiendo del servidor que obtenga, ver el tiempo de actividad parece ser una gran interrupción últimamente.

Configuración de Firebase en Consola

Como mencioné anteriormente, el artículo anterior cubrió todos los pasos para configurar la base de datos de Firebase en la consola, simplemente puede seguir ese artículo para obtener un resumen rápido. Los puntos que debe seguir para configurar Firebase son:

  1. Crear un proyecto en Firebase
  2. Configurar reglas de lectura y escritura para usuarios
  3. Mover a usuario y permisos para generar claves API
  4. Descargue el archivo Json secreto y guárdelo dentro de su proyecto

Ahora, está listo para integrar PHP con Firebase.

Configurar servidor PHP en Cloudways

Dado que Cloudways ya proporciona la versión PHP 7.x en su alojamiento para sitios web PHP, solo necesita registrarse e iniciar un servidor y todo lo demás viene prefabricado en la plataforma. La aplicación se configurará junto con el servidor y podrá acceder a ella a través de la URL en la página de detalles de acceso

Debe ocuparse de algunas cosas antes de ejecutar Firebase en servidores PHP, debe tener la versión PHP>=7.0 disponible con la extensión PHP mbstring.

También te puede interesar: Cómo alojar PHP en Amazon AWS EC2

Integre PHP con Firebase

Firebase tiene una API increíble que admite la implementación en diferentes idiomas. Para usar PHP con Firebase, proporciona un paquete PHP completo que puede integrar para trabajar con Firebase. En esta aplicación, usaré kreait/firebase-php que también recomienda Firebase.

La forma recomendada de instalar el SDK de Firebase Admin es con Composer. Composer es una herramienta de administración de dependencias para PHP que le permite declarar las dependencias que su proyecto necesita y las instala en su proyecto.

composer require kreait/firebase-php ^4.17.0

Como alternativa, puede especificar el SDK de administración de Firebase como una dependencia en el archivo composer.json existente de su proyecto:

{

  "require": {

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

  }

}

Después de la instalación, debe solicitar el cargador automático de Composer:

<?php

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

Crear conexión con Firebase

Una vez que complete la instalación del paquete y agregue el cargador automático al archivo PHP, puede crear una conexión con Firebase usando el archivo secreto descargado de la consola. Debe pasar la URL de ese archivo en el método ServiceAccount::fromJsonFile(). En segundo lugar, busque la URL de la aplicación de 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();

Ahora, en este momento, cuando haces var_dump($database); verá el objeto de base de datos completo devuelto por Firebase en la pantalla de su navegador.

Crear clase de usuario en Users.php

Lo siguiente que haré es la creación de un nuevo archivo llamado Users.php y declarar una clase de usuario en él. La clase contendrá un constructor en el que crearé una conexión de PHP con la API de Firebase y la inicializaré. Después de eso, crearé la base de datos en firebase.

public function __construct(){

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

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

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

   }

Ahora, para crear funciones PHP CRUD para manipular la base de datos, crearé métodos separados para cada caso de uso. Pero primero vamos a crear dos propiedades más fuera del constructor que contiene el nombre de la base de datos

protected $database;

   protected $dbname = 'users';

Ahora vamos a crear un método get() para recuperar los datos. Contendrá el ID de usuario para obtener un registro de usuario específico. El método también verificará si el ID de usuario no está disponible o configurado, en caso de que devuelva falso. Mientras que si encuentra que la ID está configurada correctamente, recuperará el valor con éxito.

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;

       }

   }

Dentro del método insert(), pasaré la matriz de datos porque puede contener datos únicos o múltiples. Mientras que si los datos ya están disponibles para el ID de usuario específico, actualizará el existente.

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;

   }

Ahora crearé una función de eliminación () que tendrá el ID de usuario como parámetro. El ID se validará si está configurado, luego el método remove() eliminará los datos.

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 clase de usuario completa será la siguiente:

<?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;

       }

   }

}



?>

Ahora probemos la clase. Intente aplicar métodos y verifique la base de datos de Firebase si se actualiza o no. Primero inicialice la clase:

$users = new Users();

Ahora insertemos algunos datos a través del método insert():

$users = new Users();

//var_dump($users->insert([

//    '1' => 'John',

//    '2' => 'Doe',

//    '3' => 'Smith'

//]));

Del mismo modo, puede obtener o eliminar datos como este:

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

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

Entonces puede ver cómo construí una aplicación CRUD básica usando PHP y Firebase creando una clase simple. Obviamente, puede extenderlo y puede crear algo emocionante según los requisitos.


Menos molestias. Más desarrollo.

Permítanos preparar sus requisitos de alojamiento para el futuro. Te enfocas en construir tus aplicaciones.

Empezar gratis

Conecta Firebase con el formulario de contacto de PHP

El formulario de contacto es un componente esencial de cualquier sitio web, ya que recopila mensajes y consultas de los usuarios. Creemos un formulario de contacto de PHP simple y conéctelo con Firebase para recibir mensajes. Esto comprenderá la codificación básica, ya que solo le dará una idea de cómo conectarlo. Usaré la misma clase User.php y su función insert():

El código de diseño del formulario de contacto será el siguiente:

<!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>

Ahora, en el archivo PHP, puede inicializar los espacios de nombres y la clase de usuario. Después de eso, simplemente captura las entradas y envíalas al método insert() de Firebase. Además, este es un código básico, puede ampliarlo según sus requisitos y reglas de validación:

< ? 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

   ]);



}

Palabras finales

La tecnología está evolucionando a un ritmo acelerado. Para ser competitivo y mantenerse en la carrera, debe actualizarse con los cambios. Del mismo modo, las bases de datos también evolucionan con frecuencia y podemos ver muchos servicios hoy en día que brindan bases de datos en tiempo real, procesando datos en el último momento.

En este ejemplo de Firebase PHP, le mostré cómo integrar PHP con Firebase y conectarlo con un formulario de contacto con una clase simple. Una vez que se haya conectado correctamente, puede crear casos de uso más complejos para utilizar los servicios de Firebase. También escribiré más sobre Firebase con PHP más adelante.

Preguntas frecuentes

P:¿Puedo usar Firebase con PHP?

R:Sí, Firebase proporciona una API integral para integrar la plataforma con sus proyectos PHP.

P:¿Puedo alojar PHP en Firebase?

R:No, Firebase solo admite alojamiento estático y, como tal, no puede alojar secuencias de comandos PHP en Firebase.

P:¿Cómo puedo obtener datos de una base de datos de Firebase usando PHP?

Para obtener los datos de Firebase, debe ir a la carpeta del proyecto y ejecutar el comando:

php composer.phar require kreait/firebase-php

A continuación, un nuevo index.php a la carpeta del proyecto y agregue la siguiente línea en la parte superior de index.php:

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

A continuación, cree un archivo JSON en la carpeta

Edite index.php y cree una conexión a la base de datos.