Какая система типов используется в PHP? Опишите плюсы и минусы.
В PHP используется динамическая система типов, что означает, что тип переменной определяется во время выполнения программы и может изменяться в процессе работы. Вот некоторые плюсы и минусы такой системы типов:
Плюсы:
✔️Гибкость: Динамическая типизация делает PHP очень гибким языком программирования, позволяя быстро писать и изменять код.
✔️Простота использования: Не нужно явно объявлять типы переменных, что упрощает написание кода, особенно для новичков.
✔️Легкость внесения изменений: Поскольку типы переменных могут быть изменены в любой момент, изменение структуры данных или логики программы может быть более легким и менее разрушительным.
✔️Меньше кода: Нет необходимости явно приводить типы или выполнять проверки на соответствие типов, что может сократить объем кода.
Минусы:
❗Потенциальные ошибки времени выполнения: Поскольку типы определяются во время выполнения, ошибки, связанные с несоответствием типов, могут возникнуть только во время выполнения программы, что может затруднить их обнаружение и отладку.
❗Уменьшение производительности: Проверка типов во время выполнения может негативно сказаться на производительности приложения, особенно в больших и сложных проектах.
❗Меньшая надежность: Поскольку типы переменных могут изменяться во время выполнения, это может привести к неожиданному поведению программы и усложнить ее понимание и поддержку.
❗Трудности в документации и отладке: Из-за динамической типизации может быть сложно определить типы переменных и их ожидаемое поведение, что может затруднить документирование кода и отладку ошибок.
#вопросы_с_собеседований
В PHP используется динамическая система типов, что означает, что тип переменной определяется во время выполнения программы и может изменяться в процессе работы. Вот некоторые плюсы и минусы такой системы типов:
Плюсы:
✔️Гибкость: Динамическая типизация делает PHP очень гибким языком программирования, позволяя быстро писать и изменять код.
✔️Простота использования: Не нужно явно объявлять типы переменных, что упрощает написание кода, особенно для новичков.
✔️Легкость внесения изменений: Поскольку типы переменных могут быть изменены в любой момент, изменение структуры данных или логики программы может быть более легким и менее разрушительным.
✔️Меньше кода: Нет необходимости явно приводить типы или выполнять проверки на соответствие типов, что может сократить объем кода.
Минусы:
❗Потенциальные ошибки времени выполнения: Поскольку типы определяются во время выполнения, ошибки, связанные с несоответствием типов, могут возникнуть только во время выполнения программы, что может затруднить их обнаружение и отладку.
❗Уменьшение производительности: Проверка типов во время выполнения может негативно сказаться на производительности приложения, особенно в больших и сложных проектах.
❗Меньшая надежность: Поскольку типы переменных могут изменяться во время выполнения, это может привести к неожиданному поведению программы и усложнить ее понимание и поддержку.
❗Трудности в документации и отладке: Из-за динамической типизации может быть сложно определить типы переменных и их ожидаемое поведение, что может затруднить документирование кода и отладку ошибок.
#вопросы_с_собеседований
❤10
В Symfony инструкции не всегда достаточны, но Symfony имеет интеграцию с Doctrine ORM, что круто! 🎉
🛠️ Проблема:
Как выполнить запросы к БД на основе данных формы?
📋 Решение:
Предлагается использовать объект типа DTO (DataTransferObject), созданный на основе данных формы, чтобы передавать структурированные данные в методы запросов. Это делает код более надежным и предсказуемым.💼
Далее показывается пример создания формы и обработки данных из неё в контроллере Symfony. Автор использует созданный объект DTO для передачи данных в метод запроса репозитория.
Затем переходим к рассмотрению метода findByFilter в репозитории событий (EventRepository). Этот метод выполняет запрос к базе данных на основе данных из формы, применяя различные фильтры в зависимости от выбранных пользователем параметров. Автор обсуждает компактность и эффективность этого метода, а также его возможность повторного использования благодаря отделению от остального кода.🛠️
🔧 Преимущества:
Код становится более читаемым и надежным 📖
Запросы становятся короткими, эффективными и переиспользуемыми 💪
Можно выполнять стандартные проверки кода на SQL-запросах 👨💻
Короткие, эффективные и переиспользуемые запросы к БД — круто! 🚀
🛠️ Проблема:
Как выполнить запросы к БД на основе данных формы?
📋 Решение:
Предлагается использовать объект типа DTO (DataTransferObject), созданный на основе данных формы, чтобы передавать структурированные данные в методы запросов. Это делает код более надежным и предсказуемым.💼
Далее показывается пример создания формы и обработки данных из неё в контроллере Symfony. Автор использует созданный объект DTO для передачи данных в метод запроса репозитория.
Затем переходим к рассмотрению метода findByFilter в репозитории событий (EventRepository). Этот метод выполняет запрос к базе данных на основе данных из формы, применяя различные фильтры в зависимости от выбранных пользователем параметров. Автор обсуждает компактность и эффективность этого метода, а также его возможность повторного использования благодаря отделению от остального кода.🛠️
🔧 Преимущества:
Код становится более читаемым и надежным 📖
Запросы становятся короткими, эффективными и переиспользуемыми 💪
Можно выполнять стандартные проверки кода на SQL-запросах 👨💻
Короткие, эффективные и переиспользуемые запросы к БД — круто! 🚀
🥱7👍3❤2
Почему FilamentPHP — это хорошее решение для создания CMS
В жизни каждого PHP-разработчика рано или поздно настаёт момент, когда его просят написать корпоративный сайт, новостной портал или очередной интернет-магазин.
Конечно, в этом случае можно взять готовое решение вроде Bitrix. Однако порой эти огромные комбайны оказываются действительно слишком уж огромными, и для управления тремя с половиной табличками проще написать свое решение.
В жизни каждого PHP-разработчика рано или поздно настаёт момент, когда его просят написать корпоративный сайт, новостной портал или очередной интернет-магазин.
Конечно, в этом случае можно взять готовое решение вроде Bitrix. Однако порой эти огромные комбайны оказываются действительно слишком уж огромными, и для управления тремя с половиной табличками проще написать свое решение.
Хабр
Почему FilamentPHP — это хорошее решение для создания CMS
Привет, Хабр! Меня зовут Егор Черненок, я работаю PHP-разработчиком в AGIMA . В этой статье расскажу вам о FilamentPHP. В документации говорится , что это набор красивых Fullstack-компонентов для...
🥱13❤3
🧑💻 Статьи для IT: как объяснять и распространять значимые идеи
Напоминаем, что у нас есть бесплатный курс для всех, кто хочет научиться интересно писать — о программировании и в целом.
Что: семь модулей, посвященных написанию, редактированию, иллюстрированию и распространению публикаций.
Для кого: для авторов, копирайтеров и просто программистов, которые хотят научиться интересно рассказывать о своих проектах.
👉Материалы регулярно дополняются, обновляются и корректируются. А еще мы отвечаем на все учебные вопросы в комментариях курса.
Напоминаем, что у нас есть бесплатный курс для всех, кто хочет научиться интересно писать — о программировании и в целом.
Что: семь модулей, посвященных написанию, редактированию, иллюстрированию и распространению публикаций.
Для кого: для авторов, копирайтеров и просто программистов, которые хотят научиться интересно рассказывать о своих проектах.
👉Материалы регулярно дополняются, обновляются и корректируются. А еще мы отвечаем на все учебные вопросы в комментариях курса.
❤2
4 сайта с бесплатными шаблонами для Laravel
HTMLrev: Огромная коллекция бесплатных HTML-шаблонов, в том числе множество для панелей управления Laravel. Часто обновляются и позволяют легко просматривать по категориям.
Creative Tim: Известный своими готовыми к использованию шаблонами, Creative Tim предоставляет UI-киты, административные панели и системы дизайна для нескольких архитектур, включая Laravel. Их шаблоны поставляются с высококачественным кодом и документацией.
ThemeSelection: Предлагает как бесплатные, так и платные UI-киты и шаблоны панелей управления. Хотя доступно всего несколько бесплатных вариантов, они отличаются замечательным качеством и сравнимы с премиальными пакетами.
JustBoil: JustBoil специализируется на шаблонах панелей управления для различных библиотек, включая Bulma и Tailwind. Их бесплатные шаблоны профессионально разработаны, написаны и документированы, предлагая множество компонентов для создания панелей управления.
HTMLrev: Огромная коллекция бесплатных HTML-шаблонов, в том числе множество для панелей управления Laravel. Часто обновляются и позволяют легко просматривать по категориям.
Creative Tim: Известный своими готовыми к использованию шаблонами, Creative Tim предоставляет UI-киты, административные панели и системы дизайна для нескольких архитектур, включая Laravel. Их шаблоны поставляются с высококачественным кодом и документацией.
ThemeSelection: Предлагает как бесплатные, так и платные UI-киты и шаблоны панелей управления. Хотя доступно всего несколько бесплатных вариантов, они отличаются замечательным качеством и сравнимы с премиальными пакетами.
JustBoil: JustBoil специализируется на шаблонах панелей управления для различных библиотек, включая Bulma и Tailwind. Их бесплатные шаблоны профессионально разработаны, написаны и документированы, предлагая множество компонентов для создания панелей управления.
🔥10⚡2👍2🌚2❤1
Forwarded from Библиотека джависта | Java, Spring, Maven, Hibernate
🔍💼 Исследование рынка: 8 наиболее востребованных языков программирования в 2024 году
Результаты исследования рынка IT-вакансий, проведенного DevJobsScanner. Были проанализированы 14 миллионов объявлений и выявлены 8 наиболее востребованных языков программирования.
Читать статью
#почитать
Результаты исследования рынка IT-вакансий, проведенного DevJobsScanner. Были проанализированы 14 миллионов объявлений и выявлены 8 наиболее востребованных языков программирования.
Читать статью
#почитать
❤1
💬Расскажите, какой из своих проектов вы могли бы назвать бесполезным? Или поделитесь примером такого проекта, который наблюдали со стороны.
Ждём вас в комментариях👇
#интерактив
Ждём вас в комментариях👇
#интерактив
😁9
Как создать LLM чат на WebSocket с помощью llama.cpp
Туториал описывает процесс настройки функционала чата с использованием Large Language Model (LLM) в веб-приложении.
Туториал описывает процесс настройки функционала чата с использованием Large Language Model (LLM) в веб-приложении.
PHP Resonance Framework
How to Create LLM WebSocket Chat with llama.cpp?
Learn how to setup a WebSocket server and create basic chat with an open source LLM.
❤3
Что такое «PHP Extension Community Library» (PECL), и как её использовать для расширения функциональности PHP?
Библиотека сообщества расширений PHP (PECL) служит репозиторием для PHP-расширений. PHP-расширения представляют собой модули, написанные на C, которые могут быть динамически загружены в PHP для предоставления дополнительной функциональности. Эти расширения могут взаимодействовать с PHP на более низком уровне, чем обычные скрипты PHP, позволяя разработчикам использовать системные ресурсы, взаимодействовать с базами данных и выполнять другие задачи, которые могут быть более эффективно реализованы на языке более низкого уровня.
Цель PECL заключается в предоставлении централизованного места для разработчиков, где они могут делиться и распространять PHP-расширения. Это гарантирует, что разработчики PHP могут легко находить, устанавливать и использовать расширения для расширения возможностей PHP.
Чтобы использовать PECL для расширения функциональности PHP, обычно следуют следующим шагам:
Установка PECL: Убедитесь, что PECL установлен на вашей системе. Обычно он поставляется вместе с установками PHP, но в зависимости от вашей конфигурации может потребоваться установить его отдельно.
Поиск расширений: Просмотрите веб-сайт PECL или используйте команду pecl search, чтобы найти расширения, предоставляющие необходимую функциональность.
Установка расширений: После того как вы нашли нужное расширение, вы можете установить его с помощью команды pecl install, за которой следует имя расширения.
Включение расширения: После установки расширения вам нужно включить его в файле конфигурации PHP (php.ini). Вы можете сделать это вручную, добавив строку вроде extension=имя_расширения.so в файл php.ini, или с помощью команды phpenmod, если вы используете систему с хранилищем расширений и приложений PHP (PEAR)
Перезапуск веб-сервера: После включения расширения необходимо перезапустить веб-сервер (например, Apache или Nginx), чтобы изменения вступили в силу.
Тестирование расширения: Наконец, вы можете протестировать функциональность, предоставляемую расширением, в ваших PHP-скриптах. Вы можете использовать функции или классы расширения, как это указано в его документации.
#вопросы_с_собеседований
Библиотека сообщества расширений PHP (PECL) служит репозиторием для PHP-расширений. PHP-расширения представляют собой модули, написанные на C, которые могут быть динамически загружены в PHP для предоставления дополнительной функциональности. Эти расширения могут взаимодействовать с PHP на более низком уровне, чем обычные скрипты PHP, позволяя разработчикам использовать системные ресурсы, взаимодействовать с базами данных и выполнять другие задачи, которые могут быть более эффективно реализованы на языке более низкого уровня.
Цель PECL заключается в предоставлении централизованного места для разработчиков, где они могут делиться и распространять PHP-расширения. Это гарантирует, что разработчики PHP могут легко находить, устанавливать и использовать расширения для расширения возможностей PHP.
Чтобы использовать PECL для расширения функциональности PHP, обычно следуют следующим шагам:
Установка PECL: Убедитесь, что PECL установлен на вашей системе. Обычно он поставляется вместе с установками PHP, но в зависимости от вашей конфигурации может потребоваться установить его отдельно.
Поиск расширений: Просмотрите веб-сайт PECL или используйте команду pecl search, чтобы найти расширения, предоставляющие необходимую функциональность.
Установка расширений: После того как вы нашли нужное расширение, вы можете установить его с помощью команды pecl install, за которой следует имя расширения.
Включение расширения: После установки расширения вам нужно включить его в файле конфигурации PHP (php.ini). Вы можете сделать это вручную, добавив строку вроде extension=имя_расширения.so в файл php.ini, или с помощью команды phpenmod, если вы используете систему с хранилищем расширений и приложений PHP (PEAR)
Перезапуск веб-сервера: После включения расширения необходимо перезапустить веб-сервер (например, Apache или Nginx), чтобы изменения вступили в силу.
Тестирование расширения: Наконец, вы можете протестировать функциональность, предоставляемую расширением, в ваших PHP-скриптах. Вы можете использовать функции или классы расширения, как это указано в его документации.
#вопросы_с_собеседований
👍10
Пользовательские настройки в приложениях Symfony с JBtronics/Settings-Bundle
Это руководство по использованию пакета jbtronics/settings-bundle в Symfony для управления настройками приложения. Основная идея заключается в том, что параметры настроек организованы вокруг классов, что обеспечивает типобезопасность и удобство разработки.
Это руководство по использованию пакета jbtronics/settings-bundle в Symfony для управления настройками приложения. Основная идея заключается в том, что параметры настроек организованы вокруг классов, что обеспечивает типобезопасность и удобство разработки.
DEV Community
User-configurable settings in Symfony applications with jbtronics/settings-bundle (Part 1)
Symfony offers vast configuration possibilities using container parameters and environment variables....
❤2
Предупреждение для всех, кто использует PHP
Серьёзная уязвимость была обнаружена в GLIBC, что может привести к вмешательству в PHP-сайты по всему миру. Смотрите это в этом видео.
Серьёзная уязвимость была обнаружена в GLIBC, что может привести к вмешательству в PHP-сайты по всему миру. Смотрите это в этом видео.
YouTube
this is a warning to anyone using php
An 8/10 vulnerability has been found in glibc, that could lead to the compromise of PHP around the world. Check it out in this video.
https://nvd.nist.gov/vuln/detail/CVE-2024-2961
🏫 COURSES 🏫 Learn to code in C at https://lowlevel.academy
🛒 GREAT BOOKS…
https://nvd.nist.gov/vuln/detail/CVE-2024-2961
🏫 COURSES 🏫 Learn to code in C at https://lowlevel.academy
🛒 GREAT BOOKS…
🤔7🥱6🔥2❤1
Руководитель ставит сотруднику KPI, который невозможно выполнить своими силами, но все остальные так работают. Кто прав?
Anonymous Poll
10%
Прав руководитель. Раз работают — значит все возможно
20%
Прав работник, который не хочет брать на себя ответственность
44%
Как всегда — у каждого своя правда
1%
Свой вариант (напишу в комментариях)
25%
Посмотреть результаты
❤2🥱2
PHP в 2024 году
В 2024 году значительно вырос интерес к php и здесь описываются причины этого:
🔸Непрерывная эволюция, даже после ухода из проекта главного разработчика Никиты. Страхи в отношении будущего PHP оказались напрасными, поскольку фонд PHP вырос в устойчивое сообщество, где теперь 10 разработчиков получают оплату за работу над ядром PHP.
🔸FrankenPHP, представляющий собой сервер приложений для PHP, написанный на Go, который значительно повышает производительность существующих PHP-приложений.
🔸Успех Laravel и его экосистемы, в том числе инструмента Laravel Livewire, который позволяет создавать интерактивные приложения без использования JavaScript.
🔸Растущий интерес к PHP со стороны разработчиков из других сообществ, таких как JavaScript, и рост экосистемы благодаря Composer и Packagist, которые достигли отметки в 100 миллиардов загрузок.
В 2024 году значительно вырос интерес к php и здесь описываются причины этого:
🔸Непрерывная эволюция, даже после ухода из проекта главного разработчика Никиты. Страхи в отношении будущего PHP оказались напрасными, поскольку фонд PHP вырос в устойчивое сообщество, где теперь 10 разработчиков получают оплату за работу над ядром PHP.
🔸FrankenPHP, представляющий собой сервер приложений для PHP, написанный на Go, который значительно повышает производительность существующих PHP-приложений.
🔸Успех Laravel и его экосистемы, в том числе инструмента Laravel Livewire, который позволяет создавать интерактивные приложения без использования JavaScript.
🔸Растущий интерес к PHP со стороны разработчиков из других сообществ, таких как JavaScript, и рост экосистемы благодаря Composer и Packagist, которые достигли отметки в 100 миллиардов загрузок.
👍41👏10😁4
Еще один #дайджест новостей по PHP за неделю:
🔎Команда Laravel выпустила v11.5 — улучшение производительности Blade, создание URL-адресов с параметрами запроса и многое другое.
🔎Привязка свойств(Property Hooks) в PHP 8.4 — Property Hooks RFC преодолела важный рубеж, получив подавляющее число голосов «за» — 34, и только 1 голос «против». Это намного выше требуемого большинства в 2/3 голосов, необходимого для принятия решения.
🔎Неделя Symfony #903 (15-21 апреля 2024 г.)
🔎Команда Laravel выпустила v11.5 — улучшение производительности Blade, создание URL-адресов с параметрами запроса и многое другое.
🔎Привязка свойств(Property Hooks) в PHP 8.4 — Property Hooks RFC преодолела важный рубеж, получив подавляющее число голосов «за» — 34, и только 1 голос «против». Это намного выше требуемого большинства в 2/3 голосов, необходимого для принятия решения.
🔎Неделя Symfony #903 (15-21 апреля 2024 г.)
👍7❤1
Мастерство изменения легаси кода
Статья выступает за прагматичный и пошаговый подход к обновлению устаревших проектов, сосредотачиваясь на устойчивом прогрессе и постоянном совершенствовании, а не на быстрых решениях или радикальных изменениях. В ней подчеркиваются следующие ключевые моменты:
🟢Понимание устаревших проектов: Устаревшие проекты — это не только устаревший код, но и окружающая экосистема и сопротивление изменениям внутри команды или организации.
🟢Выявление препятствий: Важно выявить факторы, которые препятствуют прогрессу, такие как изученная беспомощность, страх перед неизвестностью или сопротивление со стороны руководителей команды.
🟢Эффективное измерение прогресса: Простое отчетность по метрикам без действенных выводов может быть контрпродуктивной. Важно сосредоточиться на значимых метриках, которые способствуют реальному прогрессу, а не утонуть в данных.
🟢Смещение фокуса с ошибок на успехи: Постоянное подчеркивание ошибок может привести к культуре стыда, а не к празднованию успехов. Важно сохранять позитивное отношение и сосредотачиваться на прогрессе.
🟢Преодоление паралича выбора: Слишком много вариантов может привести к параличу выбора. Разбиение задач на меньшие, управляемые шаги может помочь преодолеть этот паралич и способствовать прогрессу.
🟢Маленькие шаги: Вместо установления великих целей, которые могут показаться подавляющими, разбиение этапов на небольшие, достижимые задачи более эффективно.
🟢Постоянное совершенствование: Принятие философии непрерывного совершенствования, или кайзен, является ключом к долгосрочному успеху. Прогресс может показаться медленным сначала, но постоянные усилия приносят значительные результаты со временем.
🟢Конкретные стратегии обновления: В статье описаны конкретные стратегии обновления различных аспектов устаревших проектов, таких как уровни PHPStan, наборы Rector, типовые объявления и обнаружение неиспользуемого кода.
Статья выступает за прагматичный и пошаговый подход к обновлению устаревших проектов, сосредотачиваясь на устойчивом прогрессе и постоянном совершенствовании, а не на быстрых решениях или радикальных изменениях. В ней подчеркиваются следующие ключевые моменты:
🟢Понимание устаревших проектов: Устаревшие проекты — это не только устаревший код, но и окружающая экосистема и сопротивление изменениям внутри команды или организации.
🟢Выявление препятствий: Важно выявить факторы, которые препятствуют прогрессу, такие как изученная беспомощность, страх перед неизвестностью или сопротивление со стороны руководителей команды.
🟢Эффективное измерение прогресса: Простое отчетность по метрикам без действенных выводов может быть контрпродуктивной. Важно сосредоточиться на значимых метриках, которые способствуют реальному прогрессу, а не утонуть в данных.
🟢Смещение фокуса с ошибок на успехи: Постоянное подчеркивание ошибок может привести к культуре стыда, а не к празднованию успехов. Важно сохранять позитивное отношение и сосредотачиваться на прогрессе.
🟢Преодоление паралича выбора: Слишком много вариантов может привести к параличу выбора. Разбиение задач на меньшие, управляемые шаги может помочь преодолеть этот паралич и способствовать прогрессу.
🟢Маленькие шаги: Вместо установления великих целей, которые могут показаться подавляющими, разбиение этапов на небольшие, достижимые задачи более эффективно.
🟢Постоянное совершенствование: Принятие философии непрерывного совершенствования, или кайзен, является ключом к долгосрочному успеху. Прогресс может показаться медленным сначала, но постоянные усилия приносят значительные результаты со временем.
🟢Конкретные стратегии обновления: В статье описаны конкретные стратегии обновления различных аспектов устаревших проектов, таких как уровни PHPStan, наборы Rector, типовые объявления и обнаружение неиспользуемого кода.
Tomasvotruba
Master the Change
When we upgrade a new project to the best version possible, the latest PHP and framework versions, it's not only about changing syntax sugar to a more fancy one.
It's about the vast focus shift in project management so far. It's a change to master. I want…
It's about the vast focus shift in project management so far. It's a change to master. I want…
🌚3👏1🎉1
🦾🧠🏋Качаем мозги к лету!
Все качают пресс, а мы — мозги, чтобы получить крутой оффер, уехать на Балии больше не быть онлайн 😎
⚡️ Распродажа Proglib.Academy: с 24 апреля до 5 мая — скидка 40% на все наши курсы!
➡️ Математика для Data Science 29 990 ₽ 17 994 ₽
➡️ Алгоритмы и структуры данных 35 990 ₽ 21 594 ₽
➡️ Основы программирования на Python 19 990 ₽ 11 994 ₽
Почему мы?
⭐️ Курсы разрабатывались при поддержке топовых преподавателей из Яндекса, Сбера, МГУ
⭐️ У нас есть менторы, которые поддерживают студентов на каждом этапе
⭐️ Мы разбираем задачи с реальных собеседований в крупнейшие компании и готовим к поступлению в ШАД
⭐️ Вход с любого уровня: например, на курсе математики сначала освежаем знания из школьной программы
Save the dates!
Все качают пресс, а мы — мозги, чтобы получить крутой оффер, уехать на Бали
Почему мы?
Save the dates!
Please open Telegram to view this post
VIEW IN TELEGRAM
❤2🔥1