Laravel propose des outils robustes pour gérer les informations de l'hôte de demande, permettant un contrôle à grain fin sur la gestion de l'URL et les configurations spécifiques à l'environnement. Les méthodes host()
, httpHost()
et schemeAndHttpHost()
fournissent des fonctionnalités distinctes pour la manipulation de l'URL et la logique spécifique au domaine. Ceci est particulièrement utile dans les applications multi-locataires, les demandes de domaine croisé et les scénarios de génération d'URL dynamiques.
Les extraits de code suivants illustrent leur utilisation:
// Accessing host information $domain = $request->host(); // Returns the domain name $hostWithPort = $request->httpHost();// Includes the port if not standard (e.g., :8080) $fullHost = $request->schemeAndHttpHost();// Returns the full scheme and host (e.g., https://example.com)
Considérez cet exemple d'un service de générateur d'URL multi-environnement:
// app/Services/DomainRouter.php <?php namespace App\Services; use Illuminate\Http\Request; class DomainRouter { public function __construct(private Request $request) {} public function generateUrls(): array { $baseDomain = $this->request->host(); $fullSchemeHost = $this->request->schemeAndHttpHost(); return match ($this->detectEnvironment($baseDomain)) { 'production' => [ 'api' => "{$fullSchemeHost}/api/v1", 'web' => $this->request->httpHost(), 'assets' => str_replace('api', 'cdn', $fullSchemeHost), 'environment' => 'production' ], 'staging' => [ 'api' => "{$fullSchemeHost}/api/v1", 'web' => str_replace('api', 'staging', $this->request->httpHost()), 'assets' => str_replace('api', 'staging-cdn', $fullSchemeHost), 'environment' => 'staging' ], default => [ 'api' => 'http://localhost:8000/api/v1', 'web' => 'http://localhost:3000', 'assets' => 'http://localhost:9000', 'environment' => 'local' ] }; } private function detectEnvironment(string $host): string { if (str_contains($host, 'prod')) { return 'production'; } if (str_contains($host, 'staging')) { return 'staging'; } return 'local'; } }
Exemple d'utilisation:
// Production (api.example.com) { "api": "https://api.example.com/api/v1", "web": "api.example.com", "assets": "https://cdn.example.com", "environment": "production" } // Staging (api.staging.example.com) { "api": "https://api.staging.example.com/api/v1", "web": "staging.example.com", "assets": "https://staging-cdn.example.com", "environment": "staging" }
Les méthodes liées à l'hôte de Laravel offrent une approche flexible et efficace pour gérer la logique spécifique au domaine et la génération d'URL dans divers environnements de déploiement.
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!