Database
 sql >> Base de Dados >  >> RDS >> Database

Integre Firebase com PHP para comunicação em tempo real


O gerenciamento de dados e transações em tempo real são o modo de comunicação mais recente atualmente. As pessoas precisam de um fluxo de dados rápido ao usar aplicativos móveis e da web. Existem muitos serviços disponíveis na internet para criação de bancos de dados em tempo real e sistemas de comunicação. Por exemplo, Pusher, Onesignal e Firebase do Google são ferramentas famosas para isso. Anteriormente, você aprendeu a integrar o Firebase no Laravel e abordou os seguintes tópicos:
  1. Configure o Firebase e gere chaves de API.
  2. Integrar no Laravel

Neste exemplo do PHP Firebase, farei uma pequena recapitulação do artigo anterior e mostrarei como Integrar o Firebase no PHP 7.x, criando funções CRUD simples com as quais você pode realizar a manipulação do banco de dados.
Integrar Firebase com PHP
  • Uma pequena recapitulação do Firebase
  • Para que serve o Firebase?
  • Firebase VS MySQL
  • Prós e contras do Firebase
  • Configurando o Firebase no console
  • Configurar o servidor PHP no Cloudways
  • Integre PHP com Firebase
  • Criar conexão com o Firebase
  • Criar classe de usuário em Users.php
  • Conecte o Firebase com o formulário de contato PHP
  • Palavras finais

Uma pequena recapitulação do Firebase


O Firebase é um serviço de comunicação em tempo real que fornece fluxo de dados em tempo real para aplicativos de bate-papo, dispositivos móveis e web. Ele fornece vários serviços em tempo real, incluindo mensagens em nuvem, sistemas de autenticação, banco de dados Firebase PHP, sistemas de notificação, armazenamento e hospedagem Firebase, tornando sua plataforma uma infinidade completa de ferramentas e serviços para o desenvolvimento de aplicativos de alta qualidade.

Neste artigo, abordarei um breve detalhamento do banco de dados Firebase. Na verdade, o Firebase fornece um banco de dados PHP em tempo real e backend como serviço. O serviço fornece aos desenvolvedores uma API que permite a sincronização de dados de aplicativos entre clientes armazenados na nuvem do Firebase. Isso elimina a necessidade de qualquer sistema de banco de dados relacional em seu servidor de hospedagem como MySQL e outros.

Para que serve o Firebase?


Quando o usuário deseja criar, gerar ou buscar dados em um ritmo muito rápido do banco de dados, os serviços em tempo real do Firebase facilitam a execução de operações como transmissão ao vivo, função de bate-papo e muito mais. É uma ferramenta perfeita para os aplicativos que possuem grandes bancos de dados, como Lyft, Shazam, Alibaba etc.

Alguns dos principais recursos do Firebase são:
  • Sem dinheiro extra para o servidor de back-end
  • Exibição rápida de dados no servidor
  • NoSQL, o que significa que é mais rápido
  • Análise
  • Hospedagem segura e rápida
  • Kit de aprendizado de máquina
  • Serviço de autenticação para segurança do usuário
  • Armazenamento em nuvem
  • Sincronização rápida de dados

Menos problemas. Mais desenvolvimento.


Deixe-nos preparar seus requisitos de hospedagem para o futuro. Você se concentra na criação de seus aplicativos.
Comece grátis

Firebase VS MySQL


O Firebase é literalmente diferente de bancos de dados tradicionais como MySQL e armazena dados na forma de documentos. Esses documentos podem ser manipulados em tempo real em mídias multiplataforma. MySQL é um banco de dados relacional que trabalha com o conceito chave->valor e cria relações com diferentes conjuntos de dados.

Essas relações são então usadas para transações de dados. O MySQL não possui o conceito de transição de dados em tempo real e requer muito trabalho para criar APIs REST.

Por outro lado, o banco de dados Firebase fornece diferentes plataformas como Android, iOS e Web para criar APIs rápidas. Basicamente, o Firebase é uma estrutura de dados hierárquica, ou seja, é como uma árvore JSON na nuvem.

O Firebase tem o conceito de chaves, que são os nomes dos nós nos quais você armazena dados. Você poderia de alguma forma compará-los com as chaves primárias de um banco de dados relacional, mas não há conceito de chave estrangeira gerenciada nele.

Obtenha seu manual do VueJS agora


Basta digitar seu endereço de e-mail e obter o link de download em sua caixa de entrada.

Obrigado


Seu Ebook está a caminho da sua caixa de entrada.

Prós e contras do Firebase


Recentemente, me deparei com a pergunta do Stack Exchange sobre os prós e contras do Firebase e isso os explica muito bem.

Profissionais
  • Se seu aplicativo for executado em um banco de dados centralizado e for atualizado por muitos usuários, ele será mais do que capaz de lidar com atualizações de dados em tempo real entre dispositivos.
  • Armazenado na nuvem, disponível em qualquer lugar.
  • API de plataforma cruzada (se você estiver usando este banco de dados com um aplicativo)
  • Eles hospedam os dados – Ou seja, se você estiver armazenando muitos dados, não precisará se preocupar com hardware.

Cons:
  • A menos que seu aplicativo seja executado em um banco de dados centralizado atualizado por uma grande quantidade de usuários, é um grande exagero.
  • O formato de armazenamento é totalmente diferente do SQL (o Firebase usa JSON). Portanto, você não conseguiria migrar com tanta facilidade.
  • As ferramentas de relatório não estão nem perto das do SQL padrão.
  • Custos – Limitado a 50 conexões e 100 MB de armazenamento.
  • Você não hospeda os dados, o Firebase sim. Dependendo de qual servidor você obtém, a visualização do tempo de atividade parece ser muito perturbadora ultimamente.

Configurando o Firebase no console


Como mencionei acima, o artigo anterior cobriu todas as etapas para configurar o banco de dados do Firebase no console, basta seguir esse artigo para uma rápida recapitulação. Os pontos que você precisa seguir para configurar o Firebase são:
  1. Criar um projeto no Firebase
  2. Configurar regras de leitura e gravação para usuários
  3. Mover para usuário e permissões para gerar chaves de API
  4. Baixe o arquivo Json secreto e salve dentro do seu projeto

Agora, você está pronto para integrar o PHP ao Firebase.

Configurar o servidor PHP no Cloudways


Como a Cloudways já está fornecendo a versão PHP 7.x em sua hospedagem para sites PHP, você só precisa se inscrever e iniciar um servidor e todo o resto vem pré-fabricado na plataforma. O aplicativo será configurado junto com o servidor e você poderá acessá-lo via URL na página de detalhes de acesso

Você precisa cuidar de algumas coisas antes de executar o Firebase em servidores PHP, que você deve ter a versão PHP>=7.0 disponível com a extensão PHP mbstring.

Você também pode gostar de: Como hospedar PHP no Amazon AWS EC2

Integrar PHP com Firebase


O Firebase tem uma API incrível que suporta implementação em diferentes idiomas. Para usar o PHP com o Firebase, ele fornece um pacote PHP completo que você pode integrar para trabalhar com o Firebase. Nesta aplicação, usarei kreait/firebase-php que também é recomendado pelo Firebase.

A maneira recomendada de instalar o SDK Admin do Firebase é com o Composer. O Composer é uma ferramenta de gerenciamento de dependências para PHP que permite declarar as dependências que seu projeto precisa e as instala em seu projeto.
composer require kreait/firebase-php ^4.17.0

Como alternativa, você pode especificar o SDK Admin do Firebase como uma dependência no arquivo composer.json existente do seu projeto:
{

  "require": {

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

  }

}

Após a instalação, você precisa exigir o autoloader do Composer:
<?php

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

Criar conexão com o Firebase


Depois de concluir a instalação do pacote e adicionar o autolader ao arquivo PHP, você pode criar uma conexão com o Firebase usando o arquivo secreto baixado do console. Você precisa passar a URL desse arquivo no método ServiceAccount::fromJsonFile(). Em segundo lugar, encontre o URL do aplicativo 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();

Agora, neste momento, quando você faz var_dump($database); você verá o objeto de banco de dados completo retornado pelo Firebase na tela do seu navegador.

Criar classe de usuário em Users.php


A próxima coisa que farei é criar um novo arquivo chamado Users.php e declarar uma classe User nele. A classe conterá um construtor no qual criarei uma conexão do PHP com a API do Firebase e a inicializarei. Depois disso, obterei o banco de dados criado no firebase.
public function __construct(){

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

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

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

   }

Agora para criar funções PHP CRUD para manipular banco de dados, criarei métodos separados para cada caso de uso. Mas primeiro vamos criar mais duas propriedades fora do construtor que contém o nome do banco de dados
protected $database;

   protected $dbname = 'users';

Agora vamos criar um método get() para recuperar os dados. Ele conterá o userID para buscar um registro de usuário específico. O método também verificará se o userID não está disponível ou configurado, caso isso retorne false. Enquanto se encontrar o ID configurado adequadamente, recuperará o valor com sucesso.
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 do método insert(), passarei o array de dados porque ele pode conter um ou vários dados. Enquanto os dados já estiverem disponíveis para o ID de usuário específico, ele atualizará o 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;

   }

Agora vou criar uma função delete() que terá userID como parâmetro. O ID será validado se estiver definido, então o método remove() removerá os dados.
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;

       }

   }

A classe User completa será a seguinte:
<?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;

       }

   }

}



?>


Agora vamos testar a classe. Tente aplicar métodos e verifique no banco de dados do Firebase se ele atualiza ou não. Primeiro inicialize a classe:
$users = new Users();

Agora vamos inserir alguns dados via método insert():
$users = new Users();

//var_dump($users->insert([

//    '1' => 'John',

//    '2' => 'Doe',

//    '3' => 'Smith'

//]));

Da mesma forma, você pode obter ou excluir dados como este:
var_dump($users->get(1));

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

Então você pode ver como eu construí um aplicativo CRUD básico usando PHP e Firebase criando uma classe simples. Obviamente, você pode estendê-lo e criar algo emocionante de acordo com os requisitos.

Menos problemas. Mais desenvolvimento.


Deixe-nos preparar seus requisitos de hospedagem para o futuro. Você se concentra na criação de seus aplicativos.
Comece grátis

Conecte o Firebase com o formulário de contato PHP


O formulário de contato é um componente essencial de qualquer site, pois reúne mensagens e consultas dos usuários. Vamos criar um formulário de contato PHP simples e conectá-lo ao Firebase para receber mensagens. Isso incluirá a codificação básica, pois apenas lhe dará uma idéia de como conectá-lo. Usarei a mesma classe User.php e sua função insert():

O código de design do formulário de contato será o seguinte:
<!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>


Agora no arquivo PHP você pode inicializar os namespaces e a classe User. Depois disso, basta pegar as entradas e enviá-las para o método insert() do Firebase. Além disso, este é um código básico, você pode estendê-lo de acordo com seus requisitos e regras de validação:
< ? 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

   ]);



}

Palavras finais


A tecnologia está evoluindo em ritmo acelerado. Para ser competitivo e permanecer na corrida, você precisa se atualizar com as mudanças. Da mesma forma, os bancos de dados também estão evoluindo com frequência e podemos ver muitos serviços hoje fornecendo banco de dados em tempo real, processando dados em cima da hora.

Neste exemplo do Firebase PHP, demonstrei como integrar o PHP ao Firebase e conectá-lo a um formulário de contato com uma classe simples. Depois de conectar com sucesso, você pode criar casos de uso mais complexos para utilizar os serviços do Firebase. Também escreverei mais sobre o Firebase com PHP posteriormente.
perguntas frequentes

P:Posso usar o Firebase com PHP?


R:Sim, o Firebase fornece uma API abrangente para integrar a plataforma aos seus projetos PHP.

P:Posso hospedar PHP no Firebase?


R:Não, o Firebase é compatível apenas com hospedagem estática e, como tal, você não pode hospedar scripts PHP no Firebase.

P:Como posso obter dados de um banco de dados do Firebase usando PHP?


Para obter os dados do Firebase, você precisa acessar a pasta do projeto e executar o comando:
php composer.phar require kreait/firebase-php

Em seguida, um novo index.php para a pasta do projeto e adicione a seguinte linha ao topo do index.php:
require DIR.'/vendor/autoload.php';

Em seguida, crie um arquivo JSON na pasta

Edite o index.php e crie uma conexão com o banco de dados.