Как получить атрибуты из объекта (PHP) - PullRequest
0 голосов
/ 16 ноября 2018

У меня есть эта функция, которая получает «пользовательскую» модель по параметру, я хочу собрать свойства этого объекта, для этого я делаю это так, код работает для меня, но редактор «phpstorm» жаловался мне на эта ошибка, и она должна была знать, что будет лучшим способом сделать это.

Спасибо

public function sendEmail(User $user)
{
    $params = [
        'name' => "{$user->completeName}",
        'language' => "{$user->locale}",
        'user_id' => "{$user->id}"
    ];

}

Поле, доступ к которому осуществляется магическим методом less ... (Ctrl + F1) Информация о проверке: указанное поле не найдено в предметном классе. Примечание. Проверка не выполняется для объектов типа "stdClass" или производных.

Thanxs

Ответы [ 2 ]

0 голосов
/ 16 ноября 2018

Это потому, что в Laravel ваша модель фактически не имеет определенных свойств. В PHP существует концепция магических методов (http://php.net/manual/en/language.oop5.overloading.php#object.get), где метод __ get () позволяет вам в основном перехватить доступ к недоступному (или несуществующему) свойству.

Это то, что происходит за кулисами в Laravel. Все ваши обращения к свойству «перехвачены», и Laravel проверяет, содержит ли ваша база данных столбец, который назван так же, как свойство, к которому вы пытаетесь получить доступ (очень упрощенно).

В контексте Laravel вы можете спокойно игнорировать это предупреждение.

0 голосов
/ 16 ноября 2018

может быть, это проще

$params = $user->toArray();

или

$params = $user->toJson();
...