Laravel пропонує потужні методи для доступу та управління інформацією про хост запиту, що дає змогу точно контролювати обробку URL та логіку, специфічну для доменів. Методи host(), httpHost() і schemeAndHttpHost() виконують різні функції в маніпулюванні URL та обробці доменів.
Ця функціональність є особливо важливою при створенні багатокористувацьких застосунків, обробці запитів з різних доменів або управлінні додатками, які потребують динамічного генерування URL, специфічних для доменів.
// Отримання основної інформації про хост
$host = $request->host(); // Повертає назву домену
$httpHost = $request->httpHost(); // Включає порт, якщо він нестандартний
$fullUrl = $request->schemeAndHttpHost(); // Повний протокол та хост
Ось приклад генератора URL для багатьох середовищ:
// app/Services/DomainRouter.php
<?php
namespace App\Services;
use Illuminate\Http\Request;
class DomainRouter
{
public function __construct(private Request $request)
{
}
public function generateRoutes(): array
{
$baseHost = $this->request->host();
$scheme = $this->request->schemeAndHttpHost();
return match($this->getEnvironment($baseHost)) {
'production' => [
'api' => "{$scheme}/api/v1",
'web' => $this->request->httpHost(),
'assets' => str_replace('api', 'cdn', $scheme),
'environment' => 'production'
],
'staging' => [
'api' => "{$scheme}/api/v1",
'web' => str_replace('api', 'staging', $this->request->httpHost()),
'assets' => str_replace('api', 'staging-cdn', $scheme),
'environment' => 'staging'
],
default => [
'api' => 'http://localhost:8000/api/v1',
'web' => 'http://localhost:3000',
'assets' => 'http://localhost:9000',
'environment' => 'local'
]
};
}
private function getEnvironment(string $host): string
{
if (str_contains($host, 'prod')) {
return 'production';
}
if (str_contains($host, 'staging')) {
return 'staging';
}
return 'local';
}
}
Приклад використання:
// В продукції (api.example.com)
{
"api": "https://api.example.com/api/v1",
"web": "api.example.com",
"assets": "https://cdn.example.com",
"environment": "production"
}
// На стадії (api.staging.example.com)
{
"api": "https://api.staging.example.com/api/v1",
"web": "staging.example.com",
"assets": "https://staging-cdn.example.com",
"environment": "staging"
}
Методи хостингу Laravel забезпечують гнучкі способи обробки логіки, специфічної для доменів, і генерації URL у різних середовищах
Досліджуйте новий пакет Data Model для PHP, який спрощує процес гідратації об'єктів без зайвих складнощів! Дізнайтеся, як впровадження типобезпечних об'єктів може революціонізувати ваш підхід до розробки, читаючи нашу статтю
Модельний контекстний протокол (MCP) відкриває нові горизонти в інтеграції AI-додатків з PHP. Дізнайтеся, як легко створити сервер, що відповідає MCP, та які можливості відкриваються для вашого проєкту
PHP 8.5 обіцяє безліч нових можливостей, таких як оператор Pipe, функції `array_first()` та `array_last()`, а також нове розширення URI. Чи готові ви дізнатися, як ці функції можуть спростити вашу розробку? Читайте далі, щоб дізнатися більше про ці захоплюючі нововведення