Почему Yii2 HttpClient не отправляет заголовки с именами в snake_case?

Yii2 HttpClient не отправляет заголовки с именами в snake_case по умолчанию, потому что это нарушает стандарты и рекомендации, установленные в протоколе HTTP.

Протокол HTTP определяет, что имена заголовков должны быть записаны с использованием дефисов (hyphen-separated words) и в нижнем регистре. Например, "Content-Type" или "User-Agent".

Это отличается от принятого стиля именования в Yii2 и многих других языках программирования, где для имён переменных и методов используется snake_case. Snake_case предпочтительно в программировании, так как это может сделать имена более читабельными и позволяет избегать проблем с регистром.

Однако, когда мы работаем с HTTP, мы должны быть согласны с принятыми стандартами. Yii2 HttpClient следует этим стандартам, и поэтому имена заголовков не изменяются в snake_case при их отправке. Это делается, чтобы быть совместимым с любыми серверными приложениями, которые ожидают дефисы в именах заголовков.

Если вам необходимо отправить заголовки с именами в snake_case, вы можете явно задать их вручную, используя метод addHeaders:

$headers = [
    'custom_header' => 'value',
    'another_header' => 'value',
];

$response = Yii::$app->httpclient->createRequest()
    ->setMethod('GET')
    ->setUrl('https://example.com')
    ->addHeaders($headers)
    ->send();

В этом примере мы создаем массив заголовков и добавляем его к запросу с помощью метода addHeaders(). Таким образом, мы можем отправить заголовки с snake_case именами. Однако, это может вызвать проблемы с некоторыми серверными приложениями, которые не ожидают такие имена заголовков.

В целом, если вы работаете с Yii2 HttpClient, важно следовать принятому формату имен заголовков в протоколе HTTP и использовать дефисы вместо знаков подчеркивания или camelCase. Это поможет обеспечить совместимость с другими системами и избежать проблем на стороне сервера.