DB::table('users')->select('name','surname')->where('id', $userId)->get();
Какова структура класса в данном коде?
Получается вызывается статический метод table
класса DB
, а select
,where
это что, переменные класса? А get()
функция в функции?
Последовательное выполнение методов класса DB
:
DB::table('users')
- выполняется метод table
, вернет экземпляр класса DB
для построения запроса к базе данных, связанный с таблицей users
;->select('name','surname')
- выполняется метод select
с аргументами переменной длины;->where('id', $userId)
- выполняется метод where
с аргументами переменной длины;->get()
- выполняется метод get
который формирует запрос и получает результаты.В пунктах 1, 2, 3 возвращается экземпляр класса DB
(object()
) для построения запроса к БД, вероятнее всего при выполнении этих методов происходит присвоение переменным класса DB
соответствующих значений для запроса, которые потом используются для построения запроса при выполнении ->get()
.
UPD - полезные ссылки
Как верно отметил @Deonis подобная реализация называется "Текучий интерфейс (fluent interface)".
Полезные ссылки с примерами и описанием:
Кофе для программистов: как напиток влияет на продуктивность кодеров?
Рекламные вывески: как привлечь внимание и увеличить продажи
Стратегії та тренди в SMM - Технології, що формують майбутнє сьогодні
Выделенный сервер, что это, для чего нужен и какие характеристики важны?
Современные решения для бизнеса: как облачные и виртуальные технологии меняют рынок
обычный текст при выделении и нажатии кнопки - выводится, а вот тот, который подгружается в iframe - нет, как это поправить?
Здравствуйте добрые люди, не судите строго за детский вопрос, я только учусьВ PHP есть функция strip_tags, которая удаляет html теги в строке