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)".
Полезные ссылки с примерами и описанием:
Современные инструменты для криптотрейдинга: как технологии помогают принимать решения
Апостиль в Лос-Анджелесе без лишних нервов и бумажной волокиты
Основные этапы разработки сайта для стоматологической клиники
Продвижение своими сайтами как стратегия роста и независимости