Есть конструкция вида:
class EmailSendPassword extends Mailable
{
use Queueable, SerializesModels;
public $user;
public $password;
public function __construct($user, $password)
{
$this->user = $user;
$this->password = $password;
}
public function build()
{
return $this
->subject('Ваш пароль на сайте ' . env('APP_NAME'))
->markdown('emails.sendpass', compact('user', 'password'));
}
}
Так вот, функция compact
начиная с php 7.3 начинает выдавать ошибку, связанную с тем, что переменная user
не определена.
В документации, касаемо изменений в php 7.3 связанной с функцией compact
только это замечание:
compact() now issues an E_NOTICE level error if a given string refers to an unset variable. Formerly, such strings have been silently skipped.
Подскажите, в чем ошибка? Разумеется, если в методе build()
прописать $user = $this->user
проблема решается, но как обойтись без этих костылей?
Все верно, до php7.3 не выводилось ничего, если переменная не определена, поэтому было исправлено. Т.е. фактически без определенных в данной оболасти видимости переменных, вызывая compact('definedVar','undefinedVar1','undefinedVar2')
мы получали ассоциативный массив только тех переменных, которые доступны в текущей области видимости
И мое субъективное мнение, что это несовсем правильно.
Соответсвенно ваш код при вызове compact
не передавал переменные во вьюху. Что в принципе (мне кажется) не совсем то, что ожидается.
Поэтому в каждом случае погони за красотой кода не следует забывать о его работоспособности. Вот так будет работать:
public function build()
{
return $this
->subject('Ваш пароль на сайте ' . env('APP_NAME'))
->markdown('emails.sendpass', [
'user' => $this->user,
'password' => $this->password
]);
}
И это уж точно не костыль
Перевод документов на английский язык: Важность и ключевые аспекты
Какие существуют виды рекламных бордов и как выбрать подходящий?
Можно ли сжать картинку PNG, не утратив при этом её прозрачность и сохранив в новый файл, как это делается? Просмотр десятка тематических статей...
Изучаю C++, полез в constexpr, но почти сразу наткнулся на странностиУ меня есть класс Date, который хранит дату, у него есть метод static bool isLeapYear(unsigned...
Не получается правильно сконструировать класс для статической инициализации map<T1,T2>, ругается на синтаксис и просит точку с запятой там...