#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. О, я понял, спасибо. но я думаю, что это не лучший способ использовать в данном случае.