Supabase avec Symfony
Intégration de Supabase dans Symfony 7
Supabase est une alternative open source à Firebase qui offre :
- une base de données PostgreSQL,
- une authentification,
- des API instantanées,
- et un stockage de fichiers en temps réel.
Présentation de Supabase
Supabase est une plateforme de développement qui combine plusieurs services essentiels :
- Base de données PostgreSQL : Une base de données relationnelle puissante et extensible
- Authentification : Système d'authentification sécurisé et personnalisable
- Stockage : Stockage de fichiers avec gestion des autorisations
- API instantanée : Génération automatique d'API RESTful et GraphQL
- Fonctions Edge : Exécution de code côté serveur
Intégration de Supabase dans Symfony 7
Voici les étapes détaillées pour intégrer Supabase dans votre projet Symfony 7 :
1. Installation du client Supabase
Installez le client Supabase via Composer :
composer require supabase/supabase-php
2. Configuration de l'environnement
Ajoutez vos identifiants Supabase dans le fichier .env
:
SUPABASE_URL=https://votre-projet.supabase.co
SUPABASE_KEY=votre-clé-api
3. Création d'un service Supabase
Créez un service Symfony pour encapsuler les fonctionnalités Supabase :
// src/Service/SupabaseService.php
namespace App\Service;
use Supabase\Client;
use Supabase\SupabaseClient;
class SupabaseService
{
private SupabaseClient $client;
public function __construct(string $supabaseUrl, string $supabaseKey)
{
$this->client = new Client($supabaseUrl, $supabaseKey);
}
public function getClient(): SupabaseClient
{
return $this->client;
}
}
4. Configuration du service
Configurez le service dans config/services.yaml
:
services:
App\Service\SupabaseService:
arguments:
$supabaseUrl: '%env(SUPABASE_URL)%'
$supabaseKey: '%env(SUPABASE_KEY)%'
5. Utilisation dans un contrôleur
Voici un exemple d'utilisation dans un contrôleur Symfony :
use App\Service\SupabaseService;
use Symfony\Bundle\FrameworkBundle\Controller\AbstractController;
use Symfony\Component\HttpFoundation\Response;
use Symfony\Component\Routing\Annotation\Route;
class ExempleController extends AbstractController
{
#[Route('/exemple', name: 'app_exemple')]
public function index(SupabaseService $supabaseService): Response
{
$client = $supabaseService->getClient();
// Exemple de requête à la base de données
$response = $client->from('users')->select('*')->execute();
$users = $response->data;
return $this->render('exemple/index.html.twig', [
'users' => $users,
]);
}
}
Fonctionnalités avancées
Authentification
Pour gérer l'authentification avec Supabase :
// Inscription
$response = $client->auth()->signUp([
'email' => 'exemple@email.com',
'password' => 'motdepasse123'
]);
// Connexion
$response = $client->auth()->signIn([
'email' => 'exemple@email.com',
'password' => 'motdepasse123'
]);
Stockage de fichiers
Pour gérer le stockage de fichiers :
// Téléchargement d'un fichier
$response = $client->storage()->from('bucket')->upload('chemin/fichier.jpg', '/chemin/local/fichier.jpg');
// Téléchargement d'un fichier
$response = $client->storage()->from('bucket')->download('chemin/fichier.jpg');
Bonnes pratiques
- Utilisez les variables d'environnement pour stocker les clés d'API Supabase
- Créez des repositories Symfony pour encapsuler les opérations Supabase spécifiques à chaque entité
- Utilisez le système de cache de Symfony pour optimiser les performances des requêtes fréquentes
En suivant ces étapes et recommandations, vous pourrez intégrer efficacement Supabase dans votre projet Symfony 7, bénéficiant ainsi d'une base de données puissante, d'une authentification robuste et d'un stockage de fichiers flexible.