СОБЕСЕДОВАНИЕ по PHP: к каким ВОПРОСАМ готовиться?

Подготовка к собеседованию на PHP Developer

Транскрипция видео:

  • Сложно ли в принципе ходить на собеседование порой это даже приятно А когда входишь во вкус то есть только Давайте отсыпьте ещё пожалуйста Я когда увидел этот вопрос я спросил Причём здесь магия вы показали свою сильную сторону можно нивелировать какие-то неудачные вопросы которые были до этого Следующий вопрос Скорее всего будет посложнее как говорил один замечательный человек пока работает Не трогай Что такое инкремент И декремент это такой лаффун на собеседованиях не ждите такие вопросы Я не задаю у меня конечно

    00:00:00 - 00:00:55

  • какой-нибудь технаря и не экспертовской области у меня какие-то башка читайте книжки пишите код Привет это натив сегодня вечером поговорим бойцы не только продолжаем нашу рубрику разбор вопросов собеседований сегодня со своим гостем Я хочу по косточкам разобрать такой язык программирования как PHP Во всем мне поможет разобраться а также даст классные ответы надеюсь на Хорошие вопросы в твоей инженер из компании андросом лаб и по совместительству преподавателя нашего курса web-разработчик Игорь алексейчук

    00:00:28 - 00:01:28

  • [музыка] и снова мы на этой встрече Давно мы с тобой не виделись Ну смотри мы сегодня Разбираем вопросы которые обычно встречаются на собеседовании У нас есть разработчик который ты у нас очень классно проводишь Ребята в восторге поэтому не только я подавателей тебе будет такой вопрос самый первый если мы говорим Сложно ли в принципе ходить на собеседование Нет не сложно и порой это даже приятно всё зависит конечно от того с каким настроем идёшь на собеседование и соответственно зависит от интервьюбера то есть реально

    00:01:01 - 00:02:22

  • особенно в начале там люди которые там закончили курсы там после Универа и тому подобное э они боятся сильно собеседование Почему Потому что не знает чего там ожидать соответственно э-э как-то правильно сказать А В любом случае практически всегда есть первых пар неудач Почему Потому что каждая компания есть какие-то свои специфические требования есть какие-то просадки в любом случае познаниям потому что всё знать невозможно и человек ещё больше начинает межеваться по этому поводу А когда входишь во вкус то есть

    00:01:47 - 00:02:49

  • только Давайте ещё пожалуйста как часто надо делать вообще вот твой совет Я раньше ходил на собеседование раз в полгода просто для того чтобы понимать Какие у меня пробелы есть знания то есть где что потерял может где что я вот приобрел в принципе для того чтобы понимать что сейчас востребовано на рынке смотри если вот например брать вопрос хождение на собеседование от позиции к позиции то есть разработчика То есть когда приходит джун это одни вопросы Мида вот совершенно могут быть другие вопросы и так далее так далее Вот

    00:02:18 - 00:03:18

  • смотри ты в любом случае сейчас семьей разработчик Мне кажется сеньор Это номинально потому что скорее всего даже у тебя есть ледовый уже задача которую ты решаешь но у нас на проекте сейчас как такого Лида нету то есть у нас три просто синюю разработчика поэтому у нас явного Лида нет и у каждого скажем так есть некая глубина именно своей области откроется да мне такую завесу Смотри вот если я как семер прихожу уже в компанию меня больше будет гонять по софтовой части по несколько скилов либо по

    00:02:48 - 00:03:47

  • хардовая часть Да тут опять-таки всё зависит от компании зависит технологии просто зависит от интервью Хотя если сравнить просто жена и сеньор по факту вопрос одни и те же только отличаются глубина То есть если жена спрашивает поверхность на сеньора уже лезут какие-то детали в какую-то механику и тому подобное ну и соответственно просто у синьора немножко больше стек немножко больше понимания всего этого ну так как ты сеньор я не могу тебе не задать джиновских вопросов собеседования будет на самом деле логично поэтому давай

    00:03:18 - 00:04:24

  • тогда построим следующим образом от меня максимально короткий вопрос понятны от тебя доступны Хороший ответ первый вопрос какие есть типы данных PHP вообще на самом деле типа данные там делится на первое это простые либо Как еще называют скалярно типа данных То есть это типа целые числа вещественные числа булева значения нал строки сейчас php8 появились там строковые числа то есть это в принципе такие достаточно простые типы данных есть более сложные типы данных то есть допустим то же самое ресурс как тип

    00:03:51 - 00:05:08

  • данных есть массив объект есть некий псевдотипы типа а на самом деле то есть Отвечая на такой вопрос Да можно перечислить и всё-таки наверное уточнить Стоит ли перечислять псевдототипы Слушай ну дофига получается на самом деле их прямо немало на самом деле да то есть там порядка 6-7 по-моему обычных колянах типов данных и уже несколько идёт сложных типа данных потом идут ещё говорю уже некоторые некие псевдотопы э то есть ну обычно Я рекомендую особенно там джуниоры разработчикам в эти псев не лезть то

    00:04:30 - 00:05:40

  • есть главное назвать основные Мне кажется закопает просто на собеседование если их называют вопрос стоит нет Если есть знания если есть понимание то всегда стоит говорить а я просто меня очень всегда смущает на собеседование когда задаёшь кандидат вопрос и тебе отвечает просто какими-то заученными фразами То есть ты видишь смотришь на человека и понимаешь что у него просто банально нет какого-то понимания То есть он просто какой-то выдержка из статьи из учебника откуда угодно там какого-то мало отвечает но э-э я такое не очень

    00:05:07 - 00:06:11

  • люблю поэтому я всегда задаю сразу какой-то дополнительный вопрос для того чтобы экспедиция либо я ошибся и человек действительно понимает о чем он говорит либо же я оказался прав и человек просто-напросто не понимает О чем говорит что такое интерфейсы интерфейс на самом деле это такая достаточно интересная конструкция по факту Ну какой-то функциональной нагрузки на не несет за исключением одного То есть это некая обещание будущей реализации то есть описывая интерфейсы и имплементирует интерфейс в некую такую

    00:05:39 - 00:06:45

  • другую структуру то есть в тот же класс Мы обязуем этот класс реализовать некие методы Следующий вопрос скорее всего будет посложнее Что такое я пошел вчера что такое инкремент и декремент И в чем разница между префиксным и постфиксом постфиксным ингредиентом декрементом то сложно выговорить Не говоря уже про то чтобы знать об этом почему инструмент клиентов в принципе можно сказать отнести к математическим операциям То есть это это операции и увеличение либо уменьшения на единицу вот ну и соответственно при инкремент

    00:06:12 - 00:07:36

  • делает что-то изначально значение перемены увеличивается и дальше она передается в работу условно говоря в каком-то цикле либо же в какую-то функцию изначально происходит увеличение переменной А потом уже она идет в работу если же это после инкремента изначально берется значение переменной она дается работать только после этого происходит ее увеличение просто своих слов согласен но от меня такой на собеседованиях не ждите такие вопросы Я не задаю Расскажи мне про динамические переменные на самом

    00:06:53 - 00:08:01

  • деле вопрос достаточно звучит страны динамические перемены То есть если в это вкладывать смысл что перемены с динамическим мнением Ну окей То есть в принципе не секрет что переменных P перед именем стоит знак доллара То есть это и доллар и имя самой переменной соответственно в PHP есть такая конструкция Когда можно указать два три четыре знака доллара то есть что происходит у нас берется первая часть доллар и имя переменной мы получаем значение допустим там внутри этой переменной хранится значение А вот если таких у нас знаков

    00:07:28 - 00:08:53

  • доллара будут несколько то есть соответственно мы вот по порядочку берем То есть у нас уже второй доллар будет ссылаться назначение первой перемены по факту мы будем получать уже обращаться к переменной а не к значению а именно перемены и соответственно чем больше вот этих вот знаков доллара тем больше у нас идет уровень вложенности у нас нет как такого статического имени перемена все зависит именно от значений переменных на котором мы ссылаемся если же динамическая переменная это по формату хранения данных науки то есть

    00:08:11 - 00:09:25

  • в PHP в принципе перемена может содержать себе в абсолютно любой тип данных примерно может быть сменена в любое время и соответственно может быть сменен YouTube философский вопрос который относится Не ко всем языкам программирования точно встречается не только в PHP Что такое рекурсия рекурсия это в принципе некая циклически повторяющаяся функция то есть которая вызывает сама себя до определенного условия точнее до определенного момента я допустим люблю использовать ресурсы как раз таки для построения неких деревьев то есть либо

    00:08:47 - 00:10:00

  • же это деревьев в плане именно структуры данных либо же там в плане даже не знаю какой-нибудь дерево для менюшки на сайте условно говоря то есть Когда необходимо из какого-то просто массива которому указаны некие зависимости построить соответствующее построить соответствующее меню то есть только было достаточно удобно ты не ограничен как раз таки вложенностью то есть и все прекрасно работает фактов функций которые вызывает сама себя в чем разница между равно два равно три равно даже не знаю как это считается

    00:09:23 - 00:10:34

  • присвоение оператор равенства и оператор тоже я сам равенства то есть по факту знак равно это когда мы в нашу переменную просто присылаем какое-то значение перемещаем в переменное значение два равно это оператор сравнения мы грубо говоря сравниваем между собой две переменные перемены на равенство Вот Ну а три равно это соответственно проверка на тождественское равенство то есть так PHP в принципе язык со слабой типизацией там есть механизм автоматического преобразования типов То есть как раз таки то есть Бывают такие

    00:10:00 - 00:11:28

  • случаи мы можем сравнить две переменные по значению То есть просто нравится то есть ну в одной будут условно говоря находиться строка в другом будет находиться число либо же наоборот там допустим булян и и Допустим можно между собой сравнить При таком сравнении мы можем получить истину потому что значение по факту одно и то же одно может быть преобразовано другое вот тождественное равенство соответственно оно проверяет не только значение переменных но и тип данных то есть должно быть равно и по значению и по

    00:10:44 - 00:11:51

  • типу данных какие есть модификаторы видимости в PHP Павлик правит протектор Какая система типов используется в PHP язык со слабой типизацией соответственно мы можем У нас есть как я уже говорил раньше механизм преобразования автоматического преобразования типов там некоторых ситуациях соответственно мы можем опять-таки вручную преобразовывать типы данных Когда нам это необходимо ну и соответственно PHP поддерживает еще такой режим как режим строгой типизации Что такое абстрактный класс и чем он

    00:11:18 - 00:12:30

  • отличается от уже упомянутого интерфейса на самом деле я этот вопрос очень люблю задавать на собеседованиях любимый вопрос от Игоря да нет На самом деле этот вопрос можно задавать практически на любом уровне Почему Потому что здесь не только на знание Сколько идет на как раз таки понимание и на внимание деталям то есть тут можно даже в принципе нигде никаких просто на логическое мышление в принципе таких отличий три абстрактный класс является соответственно классом интерфейс является интерфейсом как бы такой

    00:11:53 - 00:13:15

  • немножко каламбурчик но из этого следует что то что можно наследоваться только от одного класса абстрактный класс не исключение крисов можно наследовать неограниченное количество интерфейсы позволяют Можно мы можем лимитировать неограниченное количество класс Мы можем расшириться только от одного класса за один раз вот второе то что внутри абстрактного класса у нас могут может быть уже реализации каких-то методов то есть условно говоря не все методы должны быть абстрактными внутри него интерфейсом и себя реализацию содержать

    00:12:33 - 00:13:53

  • не могут А слово вообще ну и соответственно третье отличие это то что так абстрактный класс это все-таки класс он может иметь какие-то свойства вот Ну соответственно интерфейсов эти свойства набить нельзя на самом деле хороший такое понимание тогда если ты упомянул про абстрактный классы методы которые содержат может ли он в себе содержать частный метод Нет почему очень просто как раз таки здесь Фишка в чем то что абстрактный класс просто создать абстрактный класс и не использовать его как бы нету смысла

    00:13:13 - 00:14:29

  • соответственно мы должны делать что мы должны от этого класса наследоваться Вот соответственно частные методы они не наследуются Я когда увидел этот вопрос я спросил причем здесь магия Какие магические методы Ты знаешь и как они применяются на самом деле магических методов куча То есть почему не называется магическими в чем да Потому что эти магические методы они в принципе никогда не вызываются вручную то есть они запускаются самостоятельно Поясни Окей У нас есть некий класс интриговал просто у нас есть некий класс

    00:13:56 - 00:15:22

  • то есть но самый простой пример магического метода это конструктор когда мы создаем некий объект из класса то есть мы можем передать какие-то данные инициализацию этого объекта и соответственно мы получим объект с некими уже подготовленными данными то есть по факту мы просто пишем конструкцию и имя класса и набор вот этих вот параметров то есть по факту конструктор мы уже что не вызываем вот методом PHP называется там два нижних подчеркивание контракт то есть явно мы его никогда не вызываем и соответственно

    00:14:39 - 00:15:45

  • он автоматически вызывается при создании объекта нового объекта соответственно если у него скажем так брат метод destruct в принципе он вызывается при полном уничтожении объекта точнее даже не в этот момент срабатывает именно когда срабатывает горбич коллектор сборщик мусора когда на объект не остается ни одной ссылки в памяти и тогда уже Мы этот метод может сработать есть различные методы там Call Static там и тому подобное То есть в принципе эти методы будут срабатывать Когда мы будем обращаться к объекту как некой функции

    00:15:12 - 00:16:29

  • то есть либо Ну когда мы будем пытаться выскакивать функцию как статистическую функцию и тому подобное соответственно можно сделать какие-то заглушки допустим методы get get Set да То есть в принципе они тоже автоматически срабатывают когда мы получаем когда мы стараемся получить значение там какого-то свойства которое допустим не существует в объекте Вот и таких на самом деле методов достаточно много то есть там клипы и тому подобное то же самое Клон и в принципе ну на в реальном мире то есть они

    00:15:52 - 00:17:14

  • практически не используются скажем так они и свою роль очень сильно играют в фреймворках То есть когда краски делается Вот магия фреймворка когда Вроде бы мы написали какой-то метод а потом обращаются там условно атрибуту либо же наоборот и Казалось бы мы Обращаемся к тому чего у нас нету но у нас оно откуда-то появляется то есть ну а так и на явно чтобы в коде использовать достаточно мало приходилось но приходилось Что такое trades в принципе наверное тоже внесу такой маленький комментарий от себя Я очень люблю

    00:16:33 - 00:17:47

  • особенно вот дженнер разработчикам задавать но уже немножко такой вопрос набившая оскомину но опять-таки люблю спрашивать про наследование да то есть я уже выше говорил что в принципе мы можем наследуется только один раз то есть только от одного класса вот и я люблю спрашивать всё-таки это единственное или множественное наследование PHP вот как бы пытаюсь немножко иногда запутать и соответственно если мне отвердительно отвечает что все-таки единственное Я спрашиваю Какие альтернативы много могут

    00:17:10 - 00:18:14

  • быть для реализации множественного наследования то есть ну здесь как раз таки вот на помощь приходит Трейд и то есть это сущность достаточно похожа на классы то есть смесь класса скажем так что-то среднее между классом и интерфейсом то есть по факту структура которая может содержать себе полностью реализацию но не может в принципе мы не можем создать полноценный объект соответственно внутри класса мы можем просто импортировать вот эти вот Трейд и подключить эти трейды и уже использовать соответственно нам нет необходимости Ну

    00:17:42 - 00:18:56

  • как бы делать большую цепочку наследования то есть мы можем подключить просто необходимое количество трейдов соответственно опять-таки мы просто развиваем трейты по функционалу то есть и подключаем только нужный нам функционал в нужном месте Расскажи немножко об обработке ошибок и исключений пошло соединение интересует рай Catch finally ifroad trackege конструкция которая позволяет если даже дословно перевести трайта и вот как попробовать конструкция которая в принципе позволяет попытаться запустить ваш код

    00:18:19 - 00:19:41

  • если внутри кода будет какая-то ошибка то есть брошено какое-то исключение то есть явно не явно То есть в принципе либо язык PHP Может кинуть исключение допустим Когда у нас условно говоря идет некая некая ошибка математическая примеру вот есть division байзера деление на 0 исключение соответственно это исключение будут кинуто брошены автоматически Мы в принципе можем тоже сделать какие-то свои собственные исключения то есть унаследоваться от класса Exception то есть создать свой собственный Exception

    00:19:00 - 00:20:09

  • и как раз таки при помощи ключевого слова straw то есть это возбудить бросить возбудить там ошибку соответственно для отправки ошибки Вот соответственно в блоке Catch у нас происходит обработка этих ошибок кэш срабатывает когда тогда когда мы в принципе словили наши исключения и мы должны сказать что Окей если вдруг произошла ошибка мы там ну не знаю там в принципе сгладили угол там записали что-то влоги Может быть где-то что-то там изменили значение переменной и тому подобное и дальше комфортно продолжаем

    00:19:35 - 00:20:55

  • работать потому что зачастую то есть какие-то ошибки они привод в полной остановке скрипта по полной остановке работы то есть здесь же получается мы исключение обработали можем работать дальше соответственно блоков Catch может быть тоже там неограниченное количество то есть мы можем на каждый вид исключения описать свой блог Catch пишем просто Catch пишем класс Exception который мы хотим обрабатывать ну и соответственно пишем для него логику finali либо Final неправильно пишется это блок который будет выполнен всегда

    00:20:14 - 00:21:20

  • то есть вне зависимости от того произошло у нас исключение либо нет то есть у нас блок файл будут выполнены Что такое name Space И зачем они нужны на самом деле очень крутая штука вообще что она из себя представляет в принципе переводится как пространство имён То есть в целом исходя из названия можно понять что эти спейсы в принципе нам говорят о чем нам говорят о том Где располагается тот или иной класс То есть в принципе на Space достаточно тесно связано со стандартом PSR 4 то есть кстати вот

    00:20:48 - 00:22:15

  • ребятам которые начинают ходить по собеседованиям я рекомендовал бы хотя бы пробежаться по стандартам то есть какие-то стандартов форматирование кода псар 1 2 12 14 соответственно 4 Стандарт автозагрузки в целом если пробежитесь прочитайте все лишним не будут а их там много вообще ну по содержанию Я имею в виду то есть особо нет в принципе вот стандарты это скажем так рекомендация по оформлению кода То есть как реализовывать те или иные методы допустим если не изменяет память PSR 11 стандарт Я как-то тоже выступал на

    00:21:31 - 00:22:48

  • конференции То есть просто по факту В этом стандарте описано Как делать джекшн то есть инверсию зависимости Вот и соответственно просто описана рекомендация как оно должно выглядеть Какие интерфейс есть уже некоторые заготовки то есть для каждого стандарта там либо для части стандартов подготовлены какие-то базовые интерфейсы То есть у Вас должен быть условно говоря класс который обязательно импровиментирует вот интерфейсе то есть реализация уже лежит за тобой для того чтобы другие библиотеки там другие части

    00:22:09 - 00:23:16

  • системы могли с этим работать То есть тебе дают набор обязательный набор интерфейсов то есть чтобы знали какой метод дернуть и что примерно на выходе должно получиться Ну соответственно являются частью стандартов 4 то есть стандарт по автозагрузке классов если раньше в PHP для того чтобы подключить там какой-то класс там либо же там какой-то файл необходимо было постоянно там использовать сумасшедшие на пути либо же там писать пути от корня диска либо же относительные пути то сейчас в принципе благодаря вот эти вот

    00:22:43 - 00:24:00

  • на спейсом у нас происходит автозагрузка файлов то есть и при использовании какого-то класса нам достаточно вверху файлов указать просто секцию То есть то что мы будем использовать Класс Такие спейсом и уже у нас в принципе произойдет с вами Вот файла автолауд автоматически подключение этого файла Что такое транзакция транзакция по отношению к базе данных либо в целом Хотя ладно здесь определение будут верно как и для кодовой части такие для базы данных в целом транзакция это набор операций которые либо выполняются все

    00:23:23 - 00:24:47

  • либо не выполняется ни одна То есть одна из операций зафарилась то есть что-то пошло не так то все предыдущие операции тоже откат что система возвращается в ее изначальное состояние но но Обычно вот этот ответ следует на собеседованиях и на этом все на самом деле если смотреть на транзакции немножко глубже есть такая достаточно интересная вещь что мы можем транзакцию разбить на несколько шагов то есть в том плане что мы можем откатывать не все операции которые были выполнены если это предусмотрены наши логика а

    00:24:04 - 00:25:25

  • только ее часть делать так называемый поинты и вот вещь в принципе достаточно многие почему-то забывают рассказать то есть вот этот момент который сейчас заполнил упоминать лишним не будут как минимум Если вы говорите О чем-то с пониманием тут не только именно конкретного вопроса Если вы разбираетесь с теми Если у вас есть какое-то понимание и вы можете рассказать нам на вопрос чуть больше то есть даже Пускай может быть чуть отойти в сторону в принципе ты будет не то чтобы приветствовать это будут плюсом Почему Потому что во-первых

    00:24:45 - 00:26:03

  • за счет того что вы показали свою сильную сторону можно нивелировать какие-то неудачные вопросы которые были до этого То есть если есть Только слабый и средний ответы то есть соответственно Это скорее ну Больше нет чем да Если же да есть какие-то слабые ответы есть вроде средний а вот какие-то вопросы прям выдал выдал То есть как бы одно другое может нивелировать продолжаем про транзакции что такое уровни изоляции транзакции опять-таки это наверное вопрос не уже больше не женат то есть в принципе там в зависимости от типа базы

    00:25:25 - 00:26:32

  • данных вот типа движка и различные куча настроек то есть уже не будет технические детали внедряться то есть по факту у нас на время выполнения транзакций происходит некие уровни там нас происходит некие блокировки то есть соответственно для того чтобы обеспечить целостность данных мы запрещаем изменять на время выполнения нашей транзакции мы запрещаем выполнять изменять некоторые данные соответственно там уровней вот этих транзакций они обеспечивают правильно сказать разного уровня изоляции может быть на уровне там

    00:25:58 - 00:27:17

  • условно говоря таблицы на уровне записи и тому подобное мы можем опять-таки может быть изолирована запись только и для чтения для записи либо же там только для записи но на чтение открыто то есть в таком плане Следующий вопрос я не могу не зачитать как понимать СУБД поддерживает контроль ссылочной целостности связей на самом деле Ну Казалось бы замудренная такое определение Но это во-первых вопрос про реляционная база данных то есть опять-таки исходя из названия все достаточно просто реляционную то есть слово relation то

    00:26:38 - 00:27:55

  • есть в переводе на русский связь то есть по-хорошему все данные в базе данных должны быть между собой связаны То есть если какие-то данные где-то лежат отдельно они не используются никак не контролируются то есть Ну значит база данных не совсем корректно спроектирована соответственно Что такое ссылочная целостность ссылочная целостность это когда одни данные зависит от других на простом примере к примеру У нас есть таблица допустим с пользователями то есть таблица users и допустим таблица там Мобайл нам досталось

    00:27:16 - 00:28:29

  • условно говоря номера телефонов которые привязаны к юзеру в современном мире у каждого может быть два три Там пять телефонов и тому подобное поэтому это не совсем релевантно ходить таблицы юзерс выносим это в отдельную таблицу и соответственно Что такое ссылочная целостность примером по каким-то причинам у нас система удаляется пользователю удаляется слово совсем соответственно надо делать что-то с его контактами То есть если мы их не удалим мы как раз таки получим данные которые у нас с другими данными не связаны и

    00:27:53 - 00:29:00

  • соответственно это будут просто-напросто лежать мёртвым грузом Почему Потому что без User мы эти данные Ну никогда доставать не будут потому что они используются связки поэтому мы должны обеспечить вот ссылочную целостность если у нас удалена основная сущность с второстепенными данными Мы тоже должны что-то сделать либо удалить их то есть условно говоря там тоже самое каскадное удаление либо же их как-то видоизменить То есть я не знаю там может быть там изменить там параметр привязку и тому подобное что-то

    00:28:27 - 00:29:28

  • с ними сделать но у нас данные которые ничем другим не связаны вот Хотя вроде бы связь между таблицами есть но данные которые не связаны с другой таблицей их по факту быть не должно про любил какие есть типы связи как они там реализуются сейчас уже немножко добавилось еще связи Но скажем так расскажу про там 3-4 основных То есть опять-таки три основных это как раз таки идут из революционных базы данных эти же связи они по факту существуют на уровне базы данных это один к одному То есть когда одна запись

    00:28:57 - 00:30:14

  • в таблице связана с какой-то записью либо в этой же таблице либо же в какой-то другой таблице и соответственно запись с другой таблицы имеют только связанную одну запись тоже в другой таблице то есть говоря вот опять-таки на нашем примере То есть это будут неправильно с точки зрения проектирования но условно говоря у нас таблицы и таблица мобильные номера и у нас условно говоря Да спроектировано неправильно но мы говорим что у нас У пользователя может быть только один номер и один номер может быть только у

    00:29:35 - 00:30:42

  • одного пользователя То есть это связь один к одному но соответственно есть связь один ко многим опять-таки пример пользователей и мобильные номера То есть когда уже приближаемся к более правильному варианту реализации когда действительно пользователя пользователю может быть привязана неограниченное количество номеров телефонов это в принципе один ко многим То есть у одного пользователя может быть много номеров окно у одного номера телефона может быть только один пользователь по факту ну и соответственно многие ко многим то есть

    00:30:09 - 00:31:22

  • по реализации это делается просто промежуточный связующей таблица на примере книги писатели хорошо то смотреть То есть в принципе у одной книги Может быть там ну в принципе большое количество авторов со авторов ну и соответственно у каждого автора может быть большое количество книг то есть вот три основные три основные вида связи в ларвелле то есть соответственно связи в базе данных видов связи базе данных ну и скажем так еще появился там Точнее не появился уже очень давно есть это про ремонтный вид связи То есть в принципе

    00:30:46 - 00:31:51

  • это правильно сказать дополнительные связи ничего нового он с точки зрения несет нам просто именно с точки зрения механики фреймворка Там просто добавлено некое поле который указывают ссылку на класс с которым у нас происходит связь Вот и все но в принципе там тоже полиморфные могут быть разных видов то есть опять-таки там полиморфный там один к одному один ко многим и тому подобное Вот Но сейчас в принципе воровали какие-то новости новые виды связи я честно говоря Пока что не заглядывал не читал что такое Middle Way

    00:31:18 - 00:32:31

  • и про что это вообще если мы говорим про laravel специально такая конструкция которая как правило выполняется до выполнения нашей колбеков функций То есть в принципе до вызова контроллера либо же какой-то колбасу который у нас отвечает за генерацию какого-то спонсора какого-то ответа сервера Вот соответственно Лавр выполняется вот перед этим перед условно говоря контроллером перед нашей клубах функций и соответственно она проверяет в целом Можно ли выполнить вот действие то есть авторизованный пользователь

    00:31:56 - 00:33:18

  • достаточно там условно говоря если мы говорим про какой-то платный сервис достаточно ли У пользователя там денег на счету если ему 18 лет для того чтобы посмотреть там цены на машины но на самом деле опять-таки здесь один небольшой нюанс Я люблю на собеседование спрашивать может выполняться непосредственно после работы условно говоря контроллер по-моему если не изменяет память там до восьмой версии laravelle это было возможно но при помощи таких небольших лайфхаков то есть в целом дело достаточно легко

    00:32:37 - 00:33:58

  • Но это было возможно то ли восьмой появилась прям по полноценная фишка такая что часть кода можно запустить уже непосредственно после того как response то есть ответ был пользователю вернулся из системы В чем различие между в и хавинг в принципе выполняет одну и ту же функцию то есть фильтрацию на уровне запроса но в выполняется до основного до выполнения самого запроса То есть он изначально фильтрует данные уже срабатывает после того как наша основное тело запроса отработала и уже когда мы имеем субтирующий набор данных

    00:33:18 - 00:34:50

  • Мы его еще дополнительно фильтруем на самом деле то есть хевинг удобно использовать Когда у нас есть какие-то дополнительные группировки либо же у нас есть вычисление но условно условно говоря то есть мы в результате запроса складываем там между собой суммируем какие-то Столбцы используют какие-то агрегатные функции тому подобное и вот на основе работы вот этих вот агрегатных функций мы получили результаты условно говоря Мы считали там средняя температура по больнице на каждый день брали каждую Палату там условно говоря

    00:34:05 - 00:35:06

  • между собой суммировали и на каждый день Вот и для того чтобы нам повысить показатели надвое Мы берем просто-напросто показатель который нас устраивают по запросу либо же наоборот выбираем самый холодный день то есть выбираем непосредственно когда средняя температура была условно ниже 15 градусов то есть приваром мы такого сделать не можем что последнее это писал на чистом PHP Да в принципе есть сейчас пишу на чистом но у нас достаточно такой интересный проект по факту не могу там много деталей

    00:34:36 - 00:35:45

  • раскрывать но суть в чем то есть это финтехпроект там бешеный коммуникации с банками то есть по различным фишкам слабом там куча интеграции и Вот соответственно часть вторая часть проекта У нас написано PHP там Какая 7071 версия по моему мы проапгрейдили есть нюансы чтобы обновиться дальше Вот и в принципе параллельно пишем Новый сервис переносим функционал на ту же самую эльку круто Мне кажется тебе проект нравится тех вообще в принципе такое достаточно перспективное направление Ну как сказать

    00:35:10 - 00:36:29

  • Вот Казалось бы банки там это оплот такой вот стабильности четкости и тому подобное э-э в некоторые банки когда начинаешь лезть просто-напросто читать э-э вопишку э-э Ну это это не белорусские банки Сразу говорю вот и когда начинаешь что-то пытаться делать и понимая что оно просто Ну нифига не работает так как оно должно быть у меня был забавный такой кейс добавляли там а-а Банк в систему и получается что там через менеджер держали связь с разработчиками банка и грубо говоря потом получаем какие-то

    00:35:49 - 00:36:59

  • ошибки то есть которых нет в документации начинаем с ними писать они ну типа нет вот что-то там посмотрите там и в итоге уже потом мы им отписывали говорю ребята у вас вот здесь вот то-то здесь вот такая вот должна быть версия э-э то есть вас документация неправильно и ну как бы поправьте вот то и то но они наверное прифигели в хорошем смысле потому что поняли что как бы чуваки нам открыли глаза на Нет я думаю что они спокойненько Вы допили кофе и пошли домой потому что это работает годами и может

    00:36:25 - 00:37:26

  • быть десятилетие работать не будем трогать как говорил один замечательный человек пока работает Не трогай Слушай спасибо тебе у меня конечно как они технаря и не экспертов твоей области меня кипит башка потому что на самом деле со Старт это все тоже не Эксперт В моей области Да ладно вот я надеюсь что ролик окажется точно полезным для ребят которые в том числе участвует Я думаю что мы с тобой еще увидимся читайте книжки пишите код Пишите письма мелким почерком ребят Не бойтесь собеседований обязательно к ним готовьтесь я думаю

    00:36:55 - 00:38:00

  • Данное видео вам точно поможет нему хорошо подготовиться ссылочка на наш курс веб-разработчик будет находиться ниже но мы еще увидимся пока

    00:37:29 - 00:37:47