Size: a a a

Laravel для начинающих

2021 February 26

AH

Andrey Helldar in Laravel для начинающих
Aleks Majlo
Доброго порекомендуйте с опыта чат на ларалевь несложный .. спасибо
Чат в смысле в телеге или сделать свой чат?
Если первое, то ты уже здесь.
Если второе, то php + laravel + laravel-echo-server + socket.io + vuejs - это как минимум.
источник

AH

Andrey Helldar in Laravel для начинающих
Игорь
а (array)$node скорей всего сработает магия, которая приведет к массиву что-то. А вот что? атрибуты скорей всего. Сделай dd((array)$node), самому интересно как оно Eloquent к массиву приводит
Берёт все публичные свойства и получает на выходе массив :)
источник

G

Gag in Laravel для начинающих
Andrey Helldar
Чат в смысле в телеге или сделать свой чат?
Если первое, то ты уже здесь.
Если второе, то php + laravel + laravel-echo-server + socket.io + vuejs - это как минимум.
Web chat?
источник

И

Игорь in Laravel для начинающих
Andrey Helldar
Берёт все публичные свойства и получает на выходе массив :)
ну оно и логично, а какой метод срабатывает при попытке приведения Элоквента к массиву?
источник

R

Ruslan in Laravel для начинающих
проверял, он объект в массив приводит. информации о трейтах в этом массиве нет
источник

R

Ruslan in Laravel для начинающих
ну это было бы слишком просто)
источник

AH

Andrey Helldar in Laravel для начинающих
Ruslan
проверял, он объект в массив приводит. информации о трейтах в этом массиве нет
Ну да. Потому что приводит к массиву только публичные свойства. Например, public $foo, public $bar
источник

И

Игорь in Laravel для начинающих
Ruslan
ну это было бы слишком просто)
в чате чего угодно можно ожидать, поэтому он с азов зашел)
источник

R

Ruslan in Laravel для начинающих
Игорь
в чате чего угодно можно ожидать, поэтому он с азов зашел)
))))
источник

A

Adel in Laravel для начинающих
Ruslan
Друзья, наткнулся на интересный кусок кода:
public static function isNode($node)
{
   return is_object($node) && in_array(NodeTrait::class, (array)$node);
}

Интересует вторая часть in_array(NodeTrait::class, (array)$node). Как это работает?

$node - это модель Eloquent.
NodeTrait - это трейт

Когда модель приводят к массиву, этот массив же не содержит трейтов, он содержит поля класса Eloquent. Как он проверяет наличие трейта?
Код рабочий, проверял.

Функция возвращает true, если класс содержит указанный трейт.
Дай на код посмотреть. Всего трейта
источник

И

Игорь in Laravel для начинающих
Andrey Helldar
Ну да. Потому что приводит к массиву только публичные свойства. Например, public $foo, public $bar
тогда у меня тоже вопрос, где там строка с трейтом?
источник

R

Ruslan in Laravel для начинающих
Andrey Helldar
Ну да. Потому что приводит к массиву только публичные свойства. Например, public $foo, public $bar
ну это да, просто смысл в том, что in_array как то преверяет наличие трейта. в этом массиве трейта нет
источник

AH

Andrey Helldar in Laravel для начинающих
Ruslan
проверял, он объект в массив приводит. информации о трейтах в этом массиве нет
Вот только NodeTrait::class - это, по сути, строка, являющаяся ссылкой на класс, и через функцию in_array ты пытаешься найти в массиве, полученном из класса, найти значение. На выходе будет булевое значение - true, если найдено и false, если нет.

А что ты пытаешься сделать? Какую цель приследуюешь?
источник

A

Adel in Laravel для начинающих
Andrey Helldar
Вот только NodeTrait::class - это, по сути, строка, являющаяся ссылкой на класс, и через функцию in_array ты пытаешься найти в массиве, полученном из класса, найти значение. На выходе будет булевое значение - true, если найдено и false, если нет.

А что ты пытаешься сделать? Какую цель приследуюешь?
Прикол в том что оно работает
источник

A

Adel in Laravel для начинающих
Это не его код
источник

AH

Andrey Helldar in Laravel для начинающих
Ruslan
ну это да, просто смысл в том, что in_array как то преверяет наличие трейта. в этом массиве трейта нет
Верно. in_array ищет значение в массиве значений.
источник

И

Игорь in Laravel для начинающих
Andrey Helldar
Вот только NodeTrait::class - это, по сути, строка, являющаяся ссылкой на класс, и через функцию in_array ты пытаешься найти в массиве, полученном из класса, найти значение. На выходе будет булевое значение - true, если найдено и false, если нет.

А что ты пытаешься сделать? Какую цель приследуюешь?
он и написал - почему true на выходе, если там ничего с со строкой трейта нет
источник

R

Ruslan in Laravel для начинающих
Adel
Дай на код посмотреть. Всего трейта
источник

AH

Andrey Helldar in Laravel для начинающих
Adel
Прикол в том что оно работает
Хм...
источник

R

Ruslan in Laravel для начинающих
Andrey Helldar
Вот только NodeTrait::class - это, по сути, строка, являющаяся ссылкой на класс, и через функцию in_array ты пытаешься найти в массиве, полученном из класса, найти значение. На выходе будет булевое значение - true, если найдено и false, если нет.

А что ты пытаешься сделать? Какую цель приследуюешь?
это я понимаю. я к тому что в получившемся массиве нет такой строки.
но возвращает true.

сделать ничего, увидел странный код, решил разобраться как работает. не смог, вот спрашиваю совета
источник