Evgeniy Kuvshinov
Evgeniy Kuvshinov
  • 101
  • 354 902
Библиотека для внедрения зависимостей в PHP, cekta/di release v1, psr/container implementation
github.com/cekta/di
наш чат: t.me/dev_ru
канал с важными объявлениями: t.me/kuvshinov_e
00:00 Вступление
01:29 Основные преимущества (кратко)
06:02 Установка
07:03 Классы
13:55 Параметры
18:08 Пример с интерфейсами
19:53 Пример с абстракными классами
22:56 Union type
25:34 Intersection type
26:54 DNF type
30:02 Definition на примере DSN
32:15 Иньекция в методы после создания и все остальное
34:19 Service Locator
35:37 variadic params
38:00 overwrite аргумента
40:09 Компиляция
50:46 FQCN
53:35 Пример показывающий порядок загрузки
56:05 Как autowiring определяет имя зависимости
59:57 Benchmark
01:05:13 Contribute
Переглядів: 725

Відео

PHP, PDO Подготовленные запросы, EXECUTE vs PREPARE Statement
Переглядів 3,4 тис.3 роки тому
Что такое PREPARE и EXECUTE Statement в чем отличия подготовленных запросов, как с этим работать с PHP и PDO 00:00 Вступление 00:24 EXECUTE и PREPARE 00:50 EXECUTE Statement 03:08 PREPARE Statement 07:09 Пример именованные placeholder 07:53 Пример неименованные placeholder 08:28 bindParam и bindValue 12:09 PDO эмулирует подготовленные запросы по умолчанию!!! 14:20 query использует prepare, а не...
PHP, PDO SQL Injection #3
Переглядів 2,1 тис.3 роки тому
SQL Injection минимум который должен знать каждый разработчик код которого работает в production 00:00 Вступление и оглавление 01:06 Определения (теория) 01:45 Чем опасны SQL Injection 03:34 Практический стенд 06:12 Обхода аутедентификации 09:23 Модификации базы данных 11:47 Защита с помощью placeholder 15:49 Защита там где placeholder не применимы 18:52 Поддержи канал github.com/smpl/youtube/t...
PHP, PDO Основные операции (CRUD) #2
Переглядів 2,6 тис.3 роки тому
Основные операции которые осуществляет обычно разработчик при работе с PDO: 00:00 Вступелние и оглавление 00:54 Вставка данных (INSERT) - регистрация 04:49 Массовая вставка (bulk insert) 10:30 Обновление данных (UPDATE) - смена пароля 11:18 Удаление данных (DELETE) - удаление пользователя 12:39 Выборка данных (SELECT) - вход пользователя 15:07 Выборка нескольких строк 17:33 Что выбрать prepare ...
PHP, PDO Доступ к базе данных #1
Переглядів 8 тис.3 роки тому
Первая часть цикла видео о работе с базой данных с PDO в PHP github.com/smpl/youtube/tree/master/pdo Плейлист: ua-cam.com/play/PL7Nh93imVuXw_wvYPFsbb33f_ZiXkyLO3.html Документация PDO: www.php.net/manual/ru/book.pdo.php Канал с новостями: t.me/KuvshinovEvgeniy Чат с обсуждениями: t.me/dev_ru Поддержка: new.donatepay.ru/@kuvshinovee
Конфигурационные параметры вашего application
Переглядів 9923 роки тому
В этом видео я поделился рекомендациями которым придерживаюсь я сам и которые были проверены в десятках проектов Поддержи канал: new.donatepay.ru/@kuvshinovee Личный канал в телеге: t.me/KuvshinovEvgeniy Чат: t.me/dev_ru Вступление 00:00 Форматы (php, json, yaml, xml, toml, hjson, ...) 00:57 Основные места настройки 01:32 * Параметры по умолчанию 02:02 * Переменные окружения 05:31 Системные Пол...
CORS - Cross Origin Resource Sharing, Совместное использование ресурсов между разными источниками
Переглядів 26 тис.4 роки тому
Мы полностью разберемся в вопросах CORS и вы сможете понимать что же требуется браузеру, рассмотрим реальные примеры. Поддержи канал материально: donatepay.ru/don/kuvshinovee Канал: t.me/KuvshinovEvgeniy Наш чат: t.me/dev_ru Итоговый middleware для Laravel: gist.github.com/smpl/b24db71f6c13c2e8ab054e18bd5400fd 00:00 - Вступление 00:07 - План видео 00:50 - Пример CORS 06:48 - Origin и Access-Con...
PHPMD, статический анализ php mess detector
Переглядів 1,6 тис.4 роки тому
В этом видео речь пойдет о phpmd статическом анализе кода phpmd.org/ pull request: github.com/smpl/example/pull/5 Наш чат: t.me/dev_ru
PSALM, статический анализ PHP проекта
Переглядів 4,8 тис.4 роки тому
PSALM, статический анализ PHP проекта
PHPINSIGHTS, Статический анализ в вашего PHP проекта
Переглядів 1,6 тис.4 роки тому
PHPINSIGHTS, Статический анализ в вашего PHP проекта
PHPSTAN. Статический анализ PHP проекта
Переглядів 5 тис.4 роки тому
PHPSTAN. Статический анализ PHP проекта
Laravel idea plugin для phpstorm, розыгрыш ключа.
Переглядів 1,2 тис.4 роки тому
Laravel idea plugin для phpstorm, розыгрыш ключа.
Интеграция travis-ci в ваш php проект
Переглядів 2 тис.4 роки тому
Интеграция travis-ci в ваш php проект
Code style вашего проекта
Переглядів 2,7 тис.4 роки тому
Code style вашего проекта
Как можно ускорить выполнение большого числа миграций в dev окружение на примере laravel
Переглядів 5374 роки тому
Как можно ускорить выполнение большого числа миграций в dev окружение на примере laravel
PHP, composer, публикация пакета на packagist и github
Переглядів 2,6 тис.4 роки тому
PHP, composer, публикация пакета на packagist и github
PHP, Composer, Советы по созданию пакета, composer.json
Переглядів 8 тис.5 років тому
PHP, Composer, Советы по созданию пакета, composer.json
MUMBLE, Как пользоваться #1
Переглядів 12 тис.5 років тому
MUMBLE, Как пользоваться #1
Типичное использование проекта, PHP Framework своими лапками #5
Переглядів 7605 років тому
Типичное использование проекта, PHP Framework своими лапками #5
Автозагрузка классов в PHP
Переглядів 8 тис.5 років тому
Автозагрузка классов в PHP
Зависимости (Dependence), PHP Framework своими лапками #4
Переглядів 7705 років тому
Зависимости (Dependence), PHP Framework своими лапками #4
HTTP маршрутизация, PHP Framework своими лапками #3
Переглядів 2,5 тис.5 років тому
HTTP маршрутизация, PHP Framework своими лапками #3
HTTP Application, PHP Framework своими лапками #2
Переглядів 1,3 тис.5 років тому
HTTP Application, PHP Framework своими лапками #2
Обработка HTTP, PHP Framework своими лапками #1
Переглядів 2,5 тис.5 років тому
Обработка HTTP, PHP Framework своими лапками #1
PHP, PSR-4: Autoloading Standard (Автозагрузка)
Переглядів 5 тис.5 років тому
PHP, PSR-4: Autoloading Standard (Автозагрузка)
Docker для самых маленьких
Переглядів 19 тис.5 років тому
Docker для самых маленьких
Минимальные знания, Часть 1: hello world
Переглядів 1,9 тис.5 років тому
Минимальные знания, Часть 1: hello world
Нас больше 1000 подписчиков
Переглядів 9585 років тому
Нас больше 1000 подписчиков
PHP, PSR-3: Logger Interface
Переглядів 6 тис.5 років тому
PHP, PSR-3: Logger Interface
PHP, PSR 2: Coding Style Guide
Переглядів 4,9 тис.5 років тому
PHP, PSR 2: Coding Style Guide

КОМЕНТАРІ

  • @belovmihan
    @belovmihan 28 днів тому

    Вау, я в восторге! Отличное объяснение! Спасибо вам Евгений!

  • @megabizon9539
    @megabizon9539 Місяць тому

    Удалось маршрут по умолчанию изменить на телефоне и завернуть раздаваемый трафик в vpn трубу wireguard?

    • @kuvshinovee
      @kuvshinovee Місяць тому

      честно говоря за пределами видео не пытался, предполагаю что если рутануть телефон то это можно точно сделать, но необходимость в этом отпала. сейчас раздается интернет и так нормально(без ограничений), в случае необходимости на клиентских устройствах поднимаю тонели не совсем то что я хотел, но сойдет и проблем нет

  • @jaskier6295
    @jaskier6295 Місяць тому

    Крутое видео, вроде проста тема и потому лень было изучать, но всё-таки тут есть некоторые моменты который в которые надо вникнуть, потому видео полезное

  • @schi8m487
    @schi8m487 Місяць тому

    Красавчик. Все по делу и с тонкостями реализации

  • @Геннадий-с5э
    @Геннадий-с5э Місяць тому

    искал меднь нашел золото!)

  • @Neto-boys
    @Neto-boys 3 місяці тому

    А где продолжение первого плейлиста?

  • @Neto-boys
    @Neto-boys 3 місяці тому

    А где можно найти продолжение?

  • @imdanteasy
    @imdanteasy 3 місяці тому

    Толковое видео. Благодарю!

  • @nemercevroman
    @nemercevroman 3 місяці тому

    спасибо за полезный материал, теперь все стало понятнее!

  • @nemercevroman
    @nemercevroman 3 місяці тому

    спасибо! Все доступно и понятно

  • @TREVOGA
    @TREVOGA 3 місяці тому

    Сегодня поставил этот psalm. Бесполезное дерьмо.

  • @fiorz-b8k
    @fiorz-b8k 3 місяці тому

    Я видел где то писали 2 такие функции spl_autoload_register (в файле autoload) в одной функции путь был __DIR__ . "/models/$class.php", в другой __DIR__ . "/models/$class.class.php", имеет ли смысл так писать?

  • @ЕвгенийЮдин-й9б
    @ЕвгенийЮдин-й9б 3 місяці тому

    😮🎉😂

  • @politicazlo8926
    @politicazlo8926 4 місяці тому

    помоги )) xray (Invisible Man XRay (WireGuard Tunnel есть в сетях , если в режиме тунеля ) ) не могу раздать интернет с пк по wifi !!! уже зае....ся !!!! свисток в пк .

  • @any7ka
    @any7ka 5 місяців тому

    Спасибо, объяснили быстро и просто!

  • @sanya_kisliy
    @sanya_kisliy 5 місяців тому

    Очень качественное, крутое видео!! Для меня тема CORS раскрыта! Объяснение - вышка! Автору - респект!

  • @shipunoffA
    @shipunoffA 6 місяців тому

    С ( PDO::ATTR_EMULATE_PREPARES => false ) дольше выполнение запроса? или самого пхп кода?

  • @shipunoffA
    @shipunoffA 6 місяців тому

    PDO::ATTR_EMULATE_PREPARES => false ( PGT: 0.0094 сек. ), PDO::ATTR_EMULATE_PREPARES => true( PGT: 0.0018 сек. ), почему такое происходит? наверное лучше включить эмуляцию true?

  • @shipunoffA
    @shipunoffA 6 місяців тому

    white list вроде не пользуются сейчас) ну мол типа школьная программа) это правда?)

  • @shipunoffA
    @shipunoffA 6 місяців тому

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

  • @denisshulga7539
    @denisshulga7539 6 місяців тому

    Добрый день! А почему при запросе со стандартным значением для Content-Type: application/json на 18:26 предварительный запрос происходит, а на 20:30 с использованием Content-Type: multipart/form-data его нет? Как и с text/plain. Это какое-то исключение для значения application/json/? И второй момент, на 20:50 меняется значение заголовка на text/plain1,но на стороне сервера определен заголовок application/json, а запрос все равно считается успешным, почему?

    • @kuvshinovee
      @kuvshinovee 6 місяців тому

      я в видео объяснил, да это исключение, но это исключение не для application/json если отсылается post запрос и там передаются только определенные заголовки вроде (Accept, Accept-Language, Content-Language с любыми значениями или Content-Type со значениями multipart/form-data или text/plain и тд в видео я перечислил) то в таких случаях не отправляются предварительные запросы с OPTIONS так как запрос считается "стандартным" что касается 20:50 то я ставлю значение Content-Type: text/plain1 это НЕ СТАНДАРТНОЕ значение и браузер отправляет запрос с OPTIONS чтобы проверить можно ли так обращаться и сервер ответил что Content-Type присылать можно, все это хорошо видно на 20:57

  • @unicoxr5tj417
    @unicoxr5tj417 6 місяців тому

    полезный урок, спасибо. Автор, а вы по ER диаграмме сделаете урок, как по ней писать SQL?

    • @kuvshinovee
      @kuvshinovee 6 місяців тому

      это уже отдельная тема на тему работы с SQL это сильно не связано с ER диаграммами

    • @unicoxr5tj417
      @unicoxr5tj417 6 місяців тому

      @@kuvshinovee это будет интересно

  • @jodhi-b1d
    @jodhi-b1d 6 місяців тому

    It's official: essential details about refunds

  • @alextopsite
    @alextopsite 7 місяців тому

    Спасибо за видео! Все четко и по делу

  • @ОленаНехрищинюк
    @ОленаНехрищинюк 7 місяців тому

    С меня подписка и лайк. Без воды. Качественно ☺

  • @igorolikov1997
    @igorolikov1997 7 місяців тому

    четко

  • @theapostal9311
    @theapostal9311 7 місяців тому

    Самое лучшее и понятное объяснение очень сложной темы, большое спасибо!

  • @sol-io6zb
    @sol-io6zb 7 місяців тому

    Спасибо большое, объяснили просто замечтально!

  • @aspionerov
    @aspionerov 8 місяців тому

    А я столкнулся вот с таким кодом // Автозагрузка классов function __autoload( $name ) { include_once __DIR__.'/../core/lib/class.'.$name.'.php'; }

    • @aspionerov
      @aspionerov 8 місяців тому

      Всё думал "почему __autoload ни один скрипт не вызывает, а классы работают?" Ваше видео всё объяснило

    • @kuvshinovee
      @kuvshinovee 8 місяців тому

      @@aspionerov есть документация __autoload была первой попыткой, но была проблема в том что в ней нельзя зарегистрировать несколько функций автозагрузки (а только одну) поэтому предложили ввести новую (которая на видео) а эту функцию сделали deprecated www.php.net/manual/en/function.autoload.php

  • @aspionerov
    @aspionerov 8 місяців тому

    Спасибо за науку. Расскажите, что за программа?

    • @belovmihan
      @belovmihan 28 днів тому

      Это php storm от компании JetBrains

  • @aspionerov
    @aspionerov 8 місяців тому

    ёмко. Спасибо.

  • @ant1k-1
    @ant1k-1 9 місяців тому

    хорошее видео без воды, спасибо

  • @vivowalk
    @vivowalk 9 місяців тому

    Экзаменатору зачёт. Кандидат не видит дальше того, что уже встречал. Сам ничего придумать и догадаться не может, даже с мощными подсказками. Вопрос экзаменатору: разве on duplicate key update не делает вставку атомарной операцией? И если да, то нужен ли новый Костыль-велосипед ?

  • @Fragrus
    @Fragrus 9 місяців тому

    Харош

  • @Sa1ahaddin
    @Sa1ahaddin 9 місяців тому

    Спасибо за видео, очень понравилось, что детально и с примерами ❤ Если еще произношение английских слов подтянете, вообще шикарно будет. А то Валуе вместо вэлью (value) чет режет уши))

  • @upyrable
    @upyrable 10 місяців тому

    Спасибо

  • @phpstudy8625
    @phpstudy8625 10 місяців тому

    Классно !!! Можете осветить тему как вставить в MVC проект PhpMailer нигде нет материала на эту тему

  • @mototovich
    @mototovich 11 місяців тому

    Спасибо, отличное объяснение, самое главное что начали от истоков в виде самостоятельной реализации автозагрузчика, так как везде обычно объясняют так "Вот композер, у него автолоад подключаем и теперь все классы доступны"

  • @ДиванныйВоитель
    @ДиванныйВоитель 11 місяців тому

    а можно таймкоды?

  • @yashkevich8164
    @yashkevich8164 11 місяців тому

    Типичный PHP разработчик с небольшим опытом) Но по ответам он не мидл, ну может мидл-минус или как то так)) нужно больше проходить собесы тупо для тренировок и будет лучше отвечать. Я хз как он на Голанг разработку попал кстати, там собесы ппц жесткие обычно

  • @grechkaovsyanka1702
    @grechkaovsyanka1702 Рік тому

    Спасибо. Очень полезно

  • @grechkaovsyanka1702
    @grechkaovsyanka1702 Рік тому

    спасибо тебе большое!

  • @ГОСТЬЯ-ФЬЮ
    @ГОСТЬЯ-ФЬЮ Рік тому

    Непонятно

  • @InsureInvest
    @InsureInvest Рік тому

    Bhai hindi bhasha me video bana le 😂

  • @ivanatroshchenko5310
    @ivanatroshchenko5310 Рік тому

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

    • @kuvshinovee
      @kuvshinovee Рік тому

      можно ссылку на тайминг где мы этот вопрос обсуждаем, не очень помню все видео, а пересматривать полтора часа нет. если коротко для решения этого существуют разные механизмы, например то что можно использовать на малых/средних проектах, это очередь в redis в List, где имеется возможность вставить в конец списка и взять в начале, особенность redis в том что он однопоточный, а значит все действия сервер выполняет последовательно (но очень быстро) пока producer не вставил данные, другие не смогут получить данные и наоборот, но тут есть свои проблемы 1. Риск потерять данные очереди (redis in memory) и периодически синкает на диск, это конфигурируется, уменьшая интервалы мы будем тормозить диск, увеличивая интервалы все будет работать, но есть риск потерять данные при некорректном завершение. 2. Воркер может взять задачу из листа и свалится сам не вернув задача назад в очередь, такая задача просто пропадет или будет выполнена частично можно использовать специализированные решения rabbitmq/kafka или любые другие, все имеют свои плюсы и минусы, в основном очереди базируются на двух моделях pull это например kafka (ну или крайне упрощенный пример redis что привел выше) и push когда брокер сам дергает воркеры это например rabbitmq возможно я ответил не тот вопрос, просто предположил

    • @ivanatroshchenko5310
      @ivanatroshchenko5310 Рік тому

      @@kuvshinovee 1:08:00

    • @EugenePolischuk
      @EugenePolischuk 11 місяців тому

      @@kuvshinovee Здравствуйте! В видео вы говорили что нужно 3 типа запроса делать на отправку файла. 1 на отправку, 2-ой на получение статуса, 3-ий вебсокет. А можно ли совместить 2 и 3-ий запросы в один ведь по сути они одно и то-же делают ?

    • @kuvshinovee
      @kuvshinovee 11 місяців тому

      @@EugenePolischuk да можно просто опрос статуса делают обычно раз в 10 секунд и если не повезет то обработка может завершится, а клиент все еще ждет 10 секунд и только потом узнает об окончание обработки. поэтому для повышения юзабилити делают отдельно оперативное обновление и веб сокет тут как нельзя лучше подходит, раньше использовали технику long poling, сейчас веб сокеты достаточно распространены. как итог: 1. Ручка с получением статуса по uuid - обязательно 2. Уведомление об окончание по обработки по веб сокет - опицонально

  • @kaber6400
    @kaber6400 Рік тому

    Пока лучший собес на просторах ютуба (который я смотрел) )

  • @ElectroDiffuser
    @ElectroDiffuser Рік тому

    Отлично Евгений, только Вы не предупреждаете вот о чем, что вашим сервером можно воспользоваться либо всего лишь раз или не долго, т.к. при следующей попытке ваш сервер шлет в бан или пишет что сертификат не верный с паролем или т.п. и тд. Так что за гайд спасибо ну а с сервером эт Вы немного обманули что он Free

    • @kuvshinovee
      @kuvshinovee Рік тому

      На сервере есть возможность зарегистрировать ник и многие их регистрируют Если вы входили под ником vasya и его не зарегистрировали за собой, а потом кто то другой его зарегистрировал, то вы не сможете войти так как не вы его зарегистрировали. Если ник зарегистрировали вы и например попробуете войти с другова устройства не перенеся туда сертификат, то у вас не получится войти, аналогичная вещь будет и после переустановки ОС. Также на сервере есть требование на минимальную длину ника, от 4 символов, эти символы должны быть символами латинского алфавита, другими словами нельзя в нике русские буквы, точки, запятые, кавычки и прочее. Приятного общения на сервере

    • @ElectroDiffuser
      @ElectroDiffuser Рік тому

      @@kuvshinovee зашел под этим же ником, создал комнату, сменил сертификат, принял, вышел/захожу под новым сертиф, но меня уже не пускают, не понимаю в чем дело, но и ние сменить нет возможности, даже кнопки нет такой. Ставлю опять сертификат по уиолчанию - все тут же работает. Странно.

  • @КоростишівЛіс1

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

  • @kasa3172
    @kasa3172 Рік тому

    Спасибо за качественный контент! PDO очень хорош тем особенно кто пишет сложные sql скрипты вручную на стороне сервера БД и своим удобством при внедрении в коде. Подскажите пжл, а можно ли полностью использовать его в популярных фреймворках таких как Laravel и отказаться от Eloquent из коробки?

  • @grantorino3465
    @grantorino3465 Рік тому

    Спасибо, видео очень полезное