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, який спрощує процес гідратації об'єктів без зайвих складнощів! Дізнайтеся, як впровадження типобезпечних об'єктів може революціонізувати ваш підхід до розробки, читаючи нашу статтю
PHP 8.5 обіцяє безліч нових можливостей, таких як оператор Pipe, функції `array_first()` та `array_last()`, а також нове розширення URI. Чи готові ви дізнатися, як ці функції можуть спростити вашу розробку? Читайте далі, щоб дізнатися більше про ці захоплюючі нововведення
Зазирніть у світ Laravel, де потужний CLI-фреймворк відкриває нові можливості для розробки командного інтерфейсу. Дізнайтеся, як створити просту утиліту для перевірки акцій, яка працює з Docker, та які переваги це може принести у вашому проєкті!