Как ввести переменную $SERVER в службу
Службе моего приложения необходимо получить доступ к переменной $_SERVER
(которая предоставляется apache), называемой: $_SERVER['GEOIP_COUNTRY_CODE'];
Каковы хорошие способы достижения этого?
Мое текущее предположение состояло бы в том, чтобы ввести стек запросов, но, с другой стороны, я не хочу связывать полный стек запросов с этой службой.
Существуют ли другие способы достижения этого?
P.S. Пожалуйста, не отвечайте мне ссылками на пакеты, такие как https://github.com/aferrandini/Maxmind-GeoIp и т.д.
2 answers
Вы должны сообщить своей службе, чтобы она ввела стек запросов, чтобы получить текущий запрос.
Вы можете вызвать службу запросов , но это может привести к Исключение scopewideninginjectionexception исключение, потому что запрос может измениться.
Ваш служебный файл:
<?php
namespace Some\GreatBundle\ServicePath;
use Symfony\Component\HttpFoundation\RequestStack;
class GreatService
{
private $request;
public function __construct(RequestStack $requestStack)
{
$this->request = $requestStack->getCurrentRequest();
}
public function getGeoIpCountryCode()
{
return $this->request->server->get("GEOIP_COUNTRY_CODE");
}
}
YML:
services:
your_great_service:
class: Some\GreatBundle\ServicePath\GreatService
arguments: ["@request_stack"]
Если я вас понимаю, вы хотите использовать переменную $_SERVER
в службе. Я нашел это в документации Symfony:
use Symfony\Component\HttpFoundation\Request;
$request = Request::createFromGlobals();
// retrieve SERVER variables
$request->server->get('HTTP_HOST');
Как я вижу, нет никаких проблем с достижением вашей переменной:
$request->server->get('GEOIP_COUNTRY_CODE');