Datahantering och transaktioner i realtid är det senaste kommunikationssättet för närvarande. Människor behöver snabbt dataflöde när de använder mobil- och webbapplikationer. Det finns många tjänster tillgängliga på internet för att skapa realtidsdatabaser och kommunikationssystem. Till exempel Pusher, Onesignal och Googles Firebase är kända verktyg för det. Tidigare har du lärt dig hur du integrerar Firebase i Laravel och behandlat följande ämnen:
- Konfigurera Firebase och generera API-nycklar.
- Integrera i Laravel
I detta PHP Firebase-exempel kommer jag att ge dig en liten sammanfattning av tidigare artikel och kommer att visa dig hur du integrerar Firebase i PHP 7.x, och skapar en enkel CRUD-funktion med vilken du kan utföra databasmanipulation.
Integrera Firebase med PHP- En liten sammanfattning av Firebase
- Vad används Firebase till?
- Firebase VS MySQL
- För- och nackdelar med Firebase
- Konfigurera Firebase i konsolen
- Konfigurera PHP Server på Cloudways
- Integrera PHP med Firebase
- Skapa anslutning med Firebase
- Skapa användarklass i Users.php
- Anslut Firebase med PHP-kontaktformulär
- Slutord
En liten sammanfattning av Firebase
Firebase är en kommunikationstjänst i realtid som tillhandahåller dataflöde i realtid för chatt-, mobil- och webbapplikationer. Den tillhandahåller flera realtidstjänster inklusive molnmeddelanden, auth-system, Firebase PHP-databas, aviseringssystem, lagring och Firebase Hosting, vilket gör dess plattform till en komplett uppsjö av verktyg och tjänster för att utveckla appar av hög kvalitet.
I den här artikeln kommer jag att täcka korta detaljer om Firebase-databasen. Firebase tillhandahåller faktiskt en PHP-realtidsdatabas och backend som en tjänst. Tjänsten tillhandahåller utvecklare ett API som tillåter synkronisering av applikationsdata mellan klienter lagrade i Firebase-molnet. Detta eliminerar behovet av alla relationsdatabassystem på din värdserver som MySQL och andra.
Vad används Firebase till?
När användaren vill skapa, generera eller hämta data i mycket snabb takt från databasen, ger Firebase realtidstjänster dem lätt att utföra operationer som livestreaming, chattfunktion och mer. Det är ett perfekt verktyg för applikationer som har stora databaser som Lyft, Shazam, Alibaba etc.
Några viktiga funktioner i Firebase är:
- Inga extra pengar för backend-server
- Snabb visning av data på servern
- NoSQL vilket innebär att det går snabbare
- Analytics
- Säkert och snabbt värdskap
- Machine Learning Kit
- Autentiseringstjänst för användarsäkerhet
- Molnlagring
- Snabb synkronisering av data
Mindre krångel. Mer utveckling.
Låt oss framtidssäkra dina värdkrav. Du fokuserar på att bygga dina applikationer.
Börja gratisFirebase VS MySQL
Firebase är bokstavligen annorlunda än traditionella databaser som MySQL och lagrar data i form av dokument. Dessa dokument kan manipuleras i realtid i plattformsöverskridande medier. MySQL är en relationsdatabas som arbetar med nyckel->värdekoncept och skapar relationer med olika datauppsättningar.
Dessa relationer används sedan för datatransaktioner. MySQL saknar dataövergångskonceptet i realtid och kräver så mycket arbete för att skapa REST API:er.
Å andra sidan tillhandahåller Firebase-databasen olika plattformar som Android, iOS och webben för att skapa snabba API:er. I grund och botten är Firebase en hierarkisk datastruktur, dvs det är precis som ett JSON-träd i molnet.
Firebase har konceptet med nycklar, som är namnen på de noder som du lagrar data under. Du kan på något sätt jämföra dem med primärnycklarna i en relationsdatabas men det finns inget koncept för en hanterad främmande nyckel i den.
Hämta din VueJS-handbok nu
Ange helt enkelt din e-postadress och få nedladdningslänken i din inkorg.
Tack
Din e-bok är på väg till din inkorg.
För- och nackdelar med Firebase
Nyligen stötte jag på Stack Exchange Question om för- och nackdelar med Firebase och den förklarar dem väldigt bra.
Proffs
- Om din app körs på en centraliserad DB och uppdateras av många användare är den mer än kapabel att hantera datauppdateringar i realtid mellan enheter.
- Lagrade i molnet så lättillgängligt överallt.
- Cross Platform API (om du använder denna DB med en app)
- De är värd för data – vilket innebär att om du lagrar mycket data behöver du inte oroa dig för hårdvara.
Nackdelar:
- Om inte din app körs på en centraliserad databas uppdaterad av ett stort antal användare, är det en stor överdrift.
- Lagringsformatet skiljer sig helt från SQL (Firebase använder JSON). Så du skulle inte kunna migrera så lätt.
- Rapporteringsverktyg är inte i närheten av de för standard SQL.
- Kostnader – begränsade till 50 anslutningar och 100 MB lagringsutrymme.
- Du är inte värd för data, det gör Firebase. Beroende på vilken server du får, verkar det vara mycket störande att titta på den senaste tiden.
Konfigurera Firebase i konsolen
Som jag har nämnt ovan att den tidigare artikeln har täckt alla steg för att ställa in Firebase-databasen i konsolen, kan du helt enkelt följa den artikeln för en snabb sammanfattning. Punkterna du behöver följa för att konfigurera Firebase är:
- Skapa ett projekt i Firebase
- Ställ in läs- och skrivregler för användare
- Flytta till användare och behörigheter för att generera API-nycklar
- Ladda ner den hemliga Json-filen och spara i ditt projekt
Nu är du redo att integrera PHP med Firebase.
Konfigurera PHP-servern på Cloudways
Eftersom Cloudways redan tillhandahåller PHP 7.x-versionen på sin hosting för PHP-webbplatser, behöver du bara registrera dig och starta en server och resten kommer färdigtillverkat på plattformen. Applikationen konfigureras tillsammans med servern och du kan komma åt den via URL på sidan med åtkomstdetaljer
Du måste ta hand om några saker innan du kör Firebase på PHP-servrar, att du måste ha PHP>=7.0-version tillgänglig med mbstring PHP-tillägg.
Du kanske också gillar: Hur man är värd för PHP på Amazon AWS EC2
Integrera PHP med Firebase
Firebase har ett fantastiskt API som stöder implementering på olika språk. För att använda PHP med Firebase tillhandahåller det ett komplett PHP-paket som du kan integrera för att arbeta med Firebase. I den här applikationen kommer jag att använda kreait/firebase-php som också rekommenderas av Firebase.
Det rekommenderade sättet att installera Firebase Admin SDK är med Composer. Composer är ett beroendehanteringsverktyg för PHP som låter dig deklarera vilka beroenden ditt projekt behöver och installerar dem i ditt projekt.
composer require kreait/firebase-php ^4.17.0
Alternativt kan du ange Firebase Admin SDK som ett beroende i ditt projekts befintliga composer.json-fil:
{ "require": { "kreait/firebase-php": "^4.17.0" } }
Efter installationen måste du kräva Composers autoloader:
<?php require __DIR__.'/vendor/autoload.php';
Skapa anslutning med Firebase
När du har slutfört paketinstallationen och lagt till autoladdaren till PHP-filen kan du skapa en anslutning till Firebase med den hemliga filen som laddats ner från konsolen. Du måste skicka ut URL:en till den filen i metoden ServiceAccount::fromJsonFile(). För det andra, hitta Firebase-applikationens URL.
<?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();
Nu vid den här tiden när du gör var_dump($database); du kommer att se hela databasobjektet som returneras av Firebase på din webbläsarskärm.
Skapa användarklass i Users.php
Nästa sak jag kommer att göra är att skapa en ny fil som heter Users.php och deklarera en User-klass i den. Klassen kommer att innehålla en konstruktor där jag skapar en anslutning av PHP med Firebase API och initierar den. Efter det ska jag skapa databasen i firebase.
public function __construct(){ $acc = ServiceAccount::fromJsonFile(__DIR__ . '/secret/php-firebase-7f39e-c654ccd32aba.json'); $firebase = (new Factory)->withServiceAccount($acc)->create(); $this->database = $firebase->getDatabase(); }
Nu för att skapa PHP CRUD-funktioner för att manipulera databasen, kommer jag att skapa separata metoder för varje användningsfall. Men låt oss först skapa ytterligare två egenskaper utanför konstruktorn som innehåller databasnamnet
protected $database; protected $dbname = 'users';
Låt oss nu skapa en get()-metod för att hämta data. Den kommer att innehålla användar-ID för att hämta specifik användarpost. Metoden kommer också att kontrollera om användar-ID inte är tillgängligt eller inställt, i händelse av det kommer att returnera falskt. Medan om identifierar att ID är korrekt inställt, kommer värdet att hämtas framgångsrikt.
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; } }
Inuti metoden insert() skickar jag arrayen av data eftersom den kan innehålla enstaka eller flera data. Om datan redan är tillgänglig för det specifika användar-ID, kommer det att uppdatera det befintliga.
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; }
Nu ska jag skapa en delete()-funktion som kommer att ha användar-ID som parameter. ID:t kommer att valideras om det är inställt, sedan tar metoden remove() bort data.
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; } }
Den fullständiga användarklassen kommer att vara följande:
<?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; } } } ?>
Låt oss nu testa klassen. Försök att tillämpa metoder och kontrollera Firebase-databasen om den uppdateras eller inte. Initiera först klassen:
$users = new Users();
Låt oss nu infoga lite data via metoden insert():
$users = new Users(); //var_dump($users->insert([ // '1' => 'John', // '2' => 'Doe', // '3' => 'Smith' //]));
På samma sätt kan du hämta eller ta bort data så här:
var_dump($users->get(1)); var_dump($users->delete(2));
Så du kan se hur jag byggde en grundläggande CRUD-applikation med PHP och Firebase genom att skapa en enkel klass. Självklart kan du utöka det och skapa något spännande enligt kraven.
Mindre krångel. Mer utveckling.
Låt oss framtidssäkra dina värdkrav. Du fokuserar på att bygga dina applikationer.
Börja gratisAnslut Firebase med PHP-kontaktformulär
Kontaktformulär är en viktig komponent på alla webbplatser eftersom det samlar in användarnas meddelanden och frågor. Låt oss skapa ett enkelt PHP-kontaktformulär och koppla det till Firebase för att ta emot meddelanden. Detta kommer att omfatta grundläggande kodning eftersom det bara ger dig en idé om hur du ansluter den. Jag kommer att använda samma klass User.php och dess insert() funktion:
Kontaktformulärets designkod kommer att vara följande:
<!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>
Nu i PHP-filen kan du initiera namnområdena och användarklassen. Efter det, fånga helt enkelt ingångarna och skicka dem till metoden insert() i Firebase. Detta är också en grundläggande kod, du kan utöka den enligt dina krav och valideringsregler:
< ? 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 ]); }
Slutord
Tekniken utvecklas i snabb takt. För att vara konkurrenskraftig och hålla sig i loppet måste du uppdatera dig med de föränderliga. På liknande sätt utvecklas databaser också ofta och vi kan se många tjänster idag som tillhandahåller en databas i realtid, som bearbetar data på kort tid.
I det här Firebase PHP-exemplet har jag visat dig hur du integrerar PHP med Firebase och kopplar det med ett kontaktformulär med enkel klass. När du väl har anslutit framgångsrikt kan du skapa mer komplexa användningsfall för att använda Firebase-tjänster. Jag kommer också att skriva mer om Firebase med PHP senare.
Vanliga frågorF:Kan jag använda Firebase med PHP?
S:Ja, Firebase tillhandahåller ett omfattande API för att integrera plattformen med dina PHP-projekt.
F:Kan jag vara värd för PHP på Firebase?
S:Nej, Firebase stöder bara statisk värd och som sådan kan du inte vara värd för PHP-skript på Firebase.
F:Hur kan jag hämta data från en Firebase-databas med PHP?
För att hämta Firebase-data måste du gå till projektmappen och köra kommandot:
php composer.phar require kreait/firebase-php
Därefter en ny index.php till projektmappen och lägg till följande rad överst i index.php:
require DIR.'/vendor/autoload.php';
Skapa sedan en JSON-fil i mappen
Redigera index.php och skapa en anslutning till databasen.