Объединение строк внутри Http::get()

#php

Вопрос:

 <?php

namespace AppHttpControllers;
use IlluminateHttpRequest;
use IlluminateSupportFacadesHttp;

$baseUrl = "https://api.nomics.com/v1/currencies/ticker?key=";
$api = "df87f0731def2f83a8539a2735b4c31ee";


class ProjectController extends Controller
{
    public function getData(Request $request){
        $responce = Http::get("https://api.nomics.com/v1/currencies/ticker?key=df87f0731def2f83a8539a2735b4c31ee2b6f0b5amp;interval=1d,30damp;convert=USDamp;per-page=100amp;page=1");
        return view('index', ['responce' => $responce->json()]);
    }
}
//curl "https://api.nomics.com/v1/currencies/ticker?key=df87f0731def2f83a8539a2735b4c31eeamp;interval=1d,30damp;convert=USDamp;per-page=100amp;page=1" 

Я пытаюсь упростить строку внутри функции get, выполнив это.

 "{$baseUrl}{$api} . amp;interval=1d,30damp;convert=USDamp;per-page=100amp;page=1"
 

или

 $baseUrl . $api . "amp;interval=1d,30damp;convert=USDamp;per-page=100amp;page=1"
 

Кажется, это не работает.
Есть ли рекомендация сделать это ?
Я только начал изучать PHP.
Спасибо.

Комментарии:

1. Вам это не нужно . , если вы подставляете переменные внутри строки.

2. "{$baseUrl}{$api}amp;interval=1d,30damp;convert=USDamp;per-page=100amp;page=1"

3. Значит, все просто так ??? $baseUrl$api»и интервал=1d,30d и конвертировать=USD и за страницу=100 и страница=1″ ИЛИ «{$baseUrl}{$api} и интервал=1d,30d и конвертировать=USD и за страницу=100 и страница=1» ????

4. Если переменные находятся вне кавычек, вы должны использовать . их для объединения. Если они заключены в кавычки, вы этого не сделаете.

5. Бармар — Я получаю исключение ErrorException Неопределенная переменная $baseUrl

Ответ №1:

  • Вы можете форматировать строки с sprintf() помощью .
  • Вы можете естественно избежать двойных кавычек в PHP, фигурные скобки просто помогают читабельности.
  • Вы можете объединить одинарные кавычки и функции с .

PSB пример каждого использования.

 // Using format string functions
Http::get(sprintf('%s%samp;interval=1d,30damp;convert=USDamp;per-page=100amp;page=1', $baseUrl, $api));

// Escape - {} are not needed but increases readability
Http::get("{$baseUrl}{$api}amp;interval=1d,30damp;convert=USDamp;per-page=100amp;page=1");

// Concatenate
Http::get($baseUrl . $url . 'amp;interval=1d,30damp;convert=USDamp;per-page=100amp;page=1');
 

Вы также должны помнить области вашего проекта и правильно объявлять переменные.

 class ProjectController extends Controller
{
    private string $baseUrl = 'https://api.nomics.com/v1/currencies/ticker?key=';
    private string $api     = 'df87f0731def2f83a8539a2735b4c31ee';

    public function getData(Request $request)
    {
        $response = Http::get(sprintf('%s%samp;interval=1d,30damp;convert=USDamp;per-page=100amp;page=1', $this->baseUrl, $this->api));
        return view('index', compact('response'));
    }
 }
 

Комментарии:

1. Привет, в целях обучения, не могли бы вы показать мне, как установить эти переменные глобально и получить доступ из функции ? используя глобальный ?

2. Может быть, вы можете прочитать документацию ?

3. «$GLOBALS[‘baseUrl’] $GLOBALS[‘api’] и интервал=1d,30d и конвертация=USD и за страницу=100 и страница=1», похоже, не работает….

4. В документации просто указано, что просто используйте global $baseUrl, $api переменные в той области, в которой вы хотите их использовать. Посмотрите, как это работает здесь.

5. О, я понял, спасибо. но я думаю, что это не лучший способ использовать в данном случае.