إدارة معلومات الدومين في لارافل.

 لارافل توفر طرقًا فعّالة للوصول إلى بيانات النطاق (الـ domain)، مما يُمكّن من التحكم الدقيق في معالجة عناوين URL والنطاق الخاص بكل مجال.

كل من هذه الطرق - `host()`، و `httpHost()`، و `schemeAndHttpHost()` - تخدم أغراضًا مُختلفة في معالجة عناوين URL ومعالجة النطاقات.

يشيع استخدام هذه الطرق في أربع حالات:


// Basic host information retrieval
$host = $request->host(); // Returns domain name
$httpHost = $request->httpHost(); // Includes port if non-standard
$fullUrl = $request->schemeAndHttpHost(); // Full scheme and host
هنا مثال لمُولّد عناوين 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';
}
}
مثال على الاستخدام:
// On production (api.example.com)
{
"api": "https://api.example.com/api/v1",
"web": "api.example.com",
"assets": "https://cdn.example.com",
"environment": "production"
}
// On 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"
}

جميع الحقوق محفوظة © 2025 Laravel | عربي