Какая система типов используется в PHP? Опишите плюсы и минусы.
В PHP используется динамическая система типов, что означает, что тип переменной определяется во время выполнения программы и может изменяться в процессе работы. Вот некоторые плюсы и минусы такой системы типов:
Плюсы:
✔️Гибкость: Динамическая типизация делает PHP очень гибким языком программирования, позволяя быстро писать и изменять код.
✔️Простота использования: Не нужно явно объявлять типы переменных, что упрощает написание кода, особенно для новичков.
✔️Легкость внесения изменений: Поскольку типы переменных могут быть изменены в любой момент, изменение структуры данных или логики программы может быть более легким и менее разрушительным.
✔️Меньше кода: Нет необходимости явно приводить типы или выполнять проверки на соответствие типов, что может сократить объем кода.
Минусы:
❗Потенциальные ошибки времени выполнения: Поскольку типы определяются во время выполнения, ошибки, связанные с несоответствием типов, могут возникнуть только во время выполнения программы, что может затруднить их обнаружение и отладку.
❗Уменьшение производительности: Проверка типов во время выполнения может негативно сказаться на производительности приложения, особенно в больших и сложных проектах.
❗Меньшая надежность: Поскольку типы переменных могут изменяться во время выполнения, это может привести к неожиданному поведению программы и усложнить ее понимание и поддержку.
❗Трудности в документации и отладке: Из-за динамической типизации может быть сложно определить типы переменных и их ожидаемое поведение, что может затруднить документирование кода и отладку ошибок.
#вопросы_с_собеседований
В PHP используется динамическая система типов, что означает, что тип переменной определяется во время выполнения программы и может изменяться в процессе работы. Вот некоторые плюсы и минусы такой системы типов:
Плюсы:
✔️Гибкость: Динамическая типизация делает PHP очень гибким языком программирования, позволяя быстро писать и изменять код.
✔️Простота использования: Не нужно явно объявлять типы переменных, что упрощает написание кода, особенно для новичков.
✔️Легкость внесения изменений: Поскольку типы переменных могут быть изменены в любой момент, изменение структуры данных или логики программы может быть более легким и менее разрушительным.
✔️Меньше кода: Нет необходимости явно приводить типы или выполнять проверки на соответствие типов, что может сократить объем кода.
Минусы:
❗Потенциальные ошибки времени выполнения: Поскольку типы определяются во время выполнения, ошибки, связанные с несоответствием типов, могут возникнуть только во время выполнения программы, что может затруднить их обнаружение и отладку.
❗Уменьшение производительности: Проверка типов во время выполнения может негативно сказаться на производительности приложения, особенно в больших и сложных проектах.
❗Меньшая надежность: Поскольку типы переменных могут изменяться во время выполнения, это может привести к неожиданному поведению программы и усложнить ее понимание и поддержку.
❗Трудности в документации и отладке: Из-за динамической типизации может быть сложно определить типы переменных и их ожидаемое поведение, что может затруднить документирование кода и отладку ошибок.
#вопросы_с_собеседований
❤1👍1
Статистика версий PHP: январь 2025 г.
Регулярный обзор используемых версий PHP на основе данных, которые клиенты отправляют на packagist.org (например, когда они запускают composer
Основные моменты, охваченные в статистике, включают:
Использование версий PHP (Packagist, январь 2025):
🔹 PHP 7.4: Снижение с 19.9% (июль 2023) до 7.6%.
🔹 PHP 8.0: Уменьшение до 3.4%.
🔹 PHP 8.1: Лидирует, но падает до 18.1%.
🔹 PHP 8.2: Второе место — 28.6%.
🔹 PHP 8.3: Резкий рост до 32.7%.
🔹 PHP 8.4: Новый релиз, 5.1% использования спустя месяц.
Принятие новых версий (первый месяц):
✨ PHP 8.1: 9.1% (лучший результат).
✨ PHP 8.4: 5.1%, чуть ниже среднего (новые функции, но медленное принятие).
Минимальные версии PHP для популярных пакетов:
🛠 PHP 8.0 и новее: Рост минимальных требований к 8.1 (194 пакета) и 8.2 (171 пакета).
🛠 PHP 7.4 и старше: Постепенный спад, но ещё широко поддерживаются.
Тренды и выводы:
📉 Использование старых версий (7.x) продолжает снижаться, но они всё ещё встречаются.
📈 Пакеты всё чаще требуют современные версии PHP (8.x).
🚀 Новые версии, особенно 8.3 и 8.4, быстрее адаптируются благодаря улучшениям инструментов обновления.
Регулярный обзор используемых версий PHP на основе данных, которые клиенты отправляют на packagist.org (например, когда они запускают composer
update
команду).Основные моменты, охваченные в статистике, включают:
Использование версий PHP (Packagist, январь 2025):
🔹 PHP 7.4: Снижение с 19.9% (июль 2023) до 7.6%.
🔹 PHP 8.0: Уменьшение до 3.4%.
🔹 PHP 8.1: Лидирует, но падает до 18.1%.
🔹 PHP 8.2: Второе место — 28.6%.
🔹 PHP 8.3: Резкий рост до 32.7%.
🔹 PHP 8.4: Новый релиз, 5.1% использования спустя месяц.
Принятие новых версий (первый месяц):
✨ PHP 8.1: 9.1% (лучший результат).
✨ PHP 8.4: 5.1%, чуть ниже среднего (новые функции, но медленное принятие).
Минимальные версии PHP для популярных пакетов:
🛠 PHP 8.0 и новее: Рост минимальных требований к 8.1 (194 пакета) и 8.2 (171 пакета).
🛠 PHP 7.4 и старше: Постепенный спад, но ещё широко поддерживаются.
Тренды и выводы:
📉 Использование старых версий (7.x) продолжает снижаться, но они всё ещё встречаются.
📈 Пакеты всё чаще требуют современные версии PHP (8.x).
🚀 Новые версии, особенно 8.3 и 8.4, быстрее адаптируются благодаря улучшениям инструментов обновления.
👍8
✅Автозаполнение вводимых команд в Laravel
При создании опций для CLI-приложений вы можете улучшить UX, реализовав автозаполнение для пользователя. Это можно сделать с помощью метода
#совет
При создании опций для CLI-приложений вы можете улучшить UX, реализовав автозаполнение для пользователя. Это можно сделать с помощью метода
anticipate
, предоставляемого Laravel 🚀#совет
❤7
🔍 Can I PHP: проверяем доступность фичи налету
Расширение позволяет проверить доступность определенной функции/метода в различных версиях PHP и получить краткое описание возможностей.
👉 Сайт
#инструменты
Расширение позволяет проверить доступность определенной функции/метода в различных версиях PHP и получить краткое описание возможностей.
👉 Сайт
#инструменты
👍5
Forwarded from PHP jobs — вакансии по PHP, Symfony, Laravel
#дайджест #PHPdevjob
Вакансии PHP разработчиков уровня Junior
▪️ PHP разработчик
Офис (Новосибирск), SIBERS
Подробнее
▪️ PHP разработчик
Гибрид (Санкт-Петербург), Глолайм
Подробнее
Вакансии PHP разработчиков уровня Middle
▪️ PHP разработчик
Удалёнка / Офис (Казань), Living Core
Подробнее
▪️ PHP разработчик
Удалёнка, Marfatech
Подробнее
Вакансии PHP разработчиков уровня Senior
▪️ Разработчик PHP
Гибрид (Москва) / Удалёнка, СИГМА
Подробнее
▪️ PHP разработчик (Symfony)
Удалёнка, АльфаСтрахование
Подробнее
Понравились вакансии?
❤️ — да
🤔 — нет
Вакансии PHP разработчиков уровня Junior
▪️ PHP разработчик
Офис (Новосибирск), SIBERS
Подробнее
▪️ PHP разработчик
Гибрид (Санкт-Петербург), Глолайм
Подробнее
Вакансии PHP разработчиков уровня Middle
▪️ PHP разработчик
Удалёнка / Офис (Казань), Living Core
Подробнее
▪️ PHP разработчик
Удалёнка, Marfatech
Подробнее
Вакансии PHP разработчиков уровня Senior
▪️ Разработчик PHP
Гибрид (Москва) / Удалёнка, СИГМА
Подробнее
▪️ PHP разработчик (Symfony)
Удалёнка, АльфаСтрахование
Подробнее
Понравились вакансии?
❤️ — да
🤔 — нет
novosibirsk.hh.ru
Вакансия Junior PHP Developer в Новосибирске, работа в компании SIBERS (вакансия в архиве c 13 февраля 2025)
Зарплата: не указана. Новосибирск. Требуемый опыт: не требуется. Полная. Дата публикации: 10.02.2025.
❤3👍1
👨💻 Пусть Т9 продолжит фразу за вас:
Как же меня бесит в IT...
Как же меня бесит в IT...
🎉1
❗Вакансии «Библиотеки программиста» — ждем вас в команде!
Мы постоянно растем и развиваемся, поэтому создали отдельную страницу, на которой будут размещены наши актуальные вакансии. Сейчас мы ищем:
👉контент-менеджеров для ведения телеграм-каналов
Подробности тут
Мы предлагаем частичную занятость и полностью удаленный формат работы — можно совмещать с основной и находиться в любом месте🌴
Ждем ваших откликов 👾
Мы постоянно растем и развиваемся, поэтому создали отдельную страницу, на которой будут размещены наши актуальные вакансии. Сейчас мы ищем:
👉контент-менеджеров для ведения телеграм-каналов
Подробности тут
Мы предлагаем частичную занятость и полностью удаленный формат работы — можно совмещать с основной и находиться в любом месте🌴
Ждем ваших откликов 👾
job.proglib.io
Вакансии в медиа «Библиотека программиста»
Количество проектов в редакции постоянно растет, так что нам всегда нужны специалисты
🕧 Название инструмента: генерим одноразовые пароли в Laravel для входа в систему
Пакет предоставляет безопасный одноразовый пароль (One Time Password, OTP) по электронной почте пользователя.
🎯 Основные возможности:
— контроль трафика;
— настраиваемый срок действия;
— Недействителен после первого использования
— Заблокирован на сессии пользователя
— Признание недействительным после слишком большого количества неудачных попыток
— Подробные сообщения об ошибках
— Настраиваемый шаблон письма
— Проверяемые логи
🔗 Ссылка на Гитхаб
#инструменты
Пакет предоставляет безопасный одноразовый пароль (One Time Password, OTP) по электронной почте пользователя.
🎯 Основные возможности:
— контроль трафика;
— настраиваемый срок действия;
— Недействителен после первого использования
— Заблокирован на сессии пользователя
— Признание недействительным после слишком большого количества неудачных попыток
— Подробные сообщения об ошибках
— Настраиваемый шаблон письма
— Проверяемые логи
🔗 Ссылка на Гитхаб
#инструменты
Forwarded from Библиотека собеса по PHP | вопросы с собеседований
Какова разница между «регулярным выражением» и «выражением с подстановочными символами» в PHP, и как их использовать?
В PHP «регулярные выражения» и «выражения с подстановочными символами» служат похожим целям, но имеют некоторые различия в синтаксисе и функциональности.
Регулярные выражения:
Регулярные выражения (regex) — это мощные инструменты для поиска шаблонов и манипуляции текстом.
Они позволяют определять сложные шаблоны поиска с использованием формального синтаксиса.
Шаблоны regex могут соответствовать определенным символам, диапазонам символов, повторениям, альтернативам и т. д.
PHP предоставляет встроенные функции, такие как
Регулярные выражения более гибкие и универсальные по сравнению с выражениями с подстановочными символами.
Выражения с подстановочными символами:
Выражения с подстановочными символами проще и более ограниченные по сравнению с регулярными выражениями.
Они используют специальные символы, такие как * (соответствует нулю или более символам) и ? (соответствует ровно одному символу), для представления шаблонов.
Выражения с подстановочными символами часто используются при операциях с файловой системой, таких как поиск файлов по их именам.
PHP предоставляет функции, такие как
В PHP «регулярные выражения» и «выражения с подстановочными символами» служат похожим целям, но имеют некоторые различия в синтаксисе и функциональности.
Регулярные выражения:
Регулярные выражения (regex) — это мощные инструменты для поиска шаблонов и манипуляции текстом.
Они позволяют определять сложные шаблоны поиска с использованием формального синтаксиса.
Шаблоны regex могут соответствовать определенным символам, диапазонам символов, повторениям, альтернативам и т. д.
PHP предоставляет встроенные функции, такие как
preg_match()
, preg_match_all()
, preg_replace()
и т. д., для работы с регулярными выражениями.Регулярные выражения более гибкие и универсальные по сравнению с выражениями с подстановочными символами.
Выражения с подстановочными символами:
Выражения с подстановочными символами проще и более ограниченные по сравнению с регулярными выражениями.
Они используют специальные символы, такие как * (соответствует нулю или более символам) и ? (соответствует ровно одному символу), для представления шаблонов.
Выражения с подстановочными символами часто используются при операциях с файловой системой, таких как поиск файлов по их именам.
PHP предоставляет функции, такие как
glob()
, для работы с выражениями с подстановочными символами при операциях с файловой системой.❤6👍4🤔1
Уязвимость Host Header Injection: Риски и Способы Защиты в Laravel
Host Header Injection — это уязвимость, возникающая, когда веб-приложение доверяет заголовку Host, полученному в HTTP-запросах, без проверки. Это может привести к ряду опасных сценариев:
🔸Перенаправление пользователей на вредоносные сайты.
🔸Подделка ссылок для сброса пароля.
🔸Манипуляции с поведением сервера.
Как это проявляется в приложениях Laravel?
Если Laravel-приложение использует заголовок Host для принятия критически важных решений без проверки, это создает серьезный риск.
В первом примере ссылка для сброса пароля формируется напрямую из заголовка Host. Злоумышленник может отправить запрос с поддельным заголовком.
Как защитить Laravel-приложение от Host Header Injection?
1. Проверка заголовка Host
Вместо использования заголовка Host используйте переменную
2. Ограничение доверенных хостов
Используйте middleware
3. Корректная настройка APP_URL
Убедитесь, что в файле .env указано правильное значение:
Проверка на уязвимость
Для проверки приложения на уязвимость можно использовать бесплатные инструменты для анализа безопасности.
Host Header Injection — это уязвимость, возникающая, когда веб-приложение доверяет заголовку Host, полученному в HTTP-запросах, без проверки. Это может привести к ряду опасных сценариев:
🔸Перенаправление пользователей на вредоносные сайты.
🔸Подделка ссылок для сброса пароля.
🔸Манипуляции с поведением сервера.
Как это проявляется в приложениях Laravel?
Если Laravel-приложение использует заголовок Host для принятия критически важных решений без проверки, это создает серьезный риск.
В первом примере ссылка для сброса пароля формируется напрямую из заголовка Host. Злоумышленник может отправить запрос с поддельным заголовком.
Как защитить Laravel-приложение от Host Header Injection?
1. Проверка заголовка Host
Вместо использования заголовка Host используйте переменную
APP_URL
из файла конфигурации .env
2. Ограничение доверенных хостов
Используйте middleware
trustedproxies
, чтобы разрешить запросы только с доверенных хостов. В файле config/trustedproxy.php
настройте параметр host
3. Корректная настройка APP_URL
Убедитесь, что в файле .env указано правильное значение:
APP_URL=https://yourdomain.com
Проверка на уязвимость
Для проверки приложения на уязвимость можно использовать бесплатные инструменты для анализа безопасности.
👍2😁1
🤖Подключение чата DeepSeek к Алисе
Подробный гайд по интеграции GPT в колонку Алисы с использованием DeepSeek. Внутри — пошаговая настройка PHP-хостинга, секретов и навыков в Яндекс.Диалогах. В результате получаете умного помощника, способного отвечать на вопросы с помощью возможностей GPT.
👉 Читать гайд
Подробный гайд по интеграции GPT в колонку Алисы с использованием DeepSeek. Внутри — пошаговая настройка PHP-хостинга, секретов и навыков в Яндекс.Диалогах. В результате получаете умного помощника, способного отвечать на вопросы с помощью возможностей GPT.
👉 Читать гайд
🔥4🥰2🥱2
📚 ТОП-10 свежих и актуальных книг по PHP для новичков и профессионалов
Когда-то PHP был препроцессором гипертекста, а сейчас стал популярным скриптовым языком общего назначения. Предлагаем вниманию читателей нашу версию десяти лучших актуальных книг для изучения этого языка программирования.
👉Читать далее
Когда-то PHP был препроцессором гипертекста, а сейчас стал популярным скриптовым языком общего назначения. Предлагаем вниманию читателей нашу версию десяти лучших актуальных книг для изучения этого языка программирования.
👉Читать далее
🥱3👍1🌚1
Что выведет код?
Anonymous Quiz
11%
Возникнет ошибка выполнения сценария
3%
null
38%
79
20%
0
28%
53
👍17🥰4🤔1
🛠️ Batch vs Stream Processing: ключевые различия
Batch Processing — обработка данных партиями с последующим выводом финального результата.
Stream Processing — обработка данных в режиме реального времени по мере их поступления.
Подробнее см. на изображении. ⚡️
#инфографика
Batch Processing — обработка данных партиями с последующим выводом финального результата.
Stream Processing — обработка данных в режиме реального времени по мере их поступления.
Подробнее см. на изображении. ⚡️
#инфографика
👍1
Подборка новостей по PHP за неделю:
🔎 Представлен CakePHP 5.1: упорядочены зависимости композитора, lib-ICU уже является неявной зависимостью через intl, проведены незначительные оптимизации за счет удаления избыточных присваиваний, проверок
🔎 Поддержка файлов .env теперь встроена в PhpStorm, что устраняет необходимость хардкодинга этих значений в коде приложения.
🔎 В Laravel 11.38 добавлено правило валидации Fluent Email. Команда Laravel выпустила версию 11.38, в которой появилось правило валидации Fluent Email, возможность получения запроса формы или значения Fluent в виде массива, конвейерный метод
🔎Вышли PHP 8.4.3 и PHP 8.3.16! — Это баг-фикс релизы.
🔎Неделя Symfony #942 (13-19 января 2025 года)
#дайджест
🔎 Представлен CakePHP 5.1: упорядочены зависимости композитора, lib-ICU уже является неявной зависимостью через intl, проведены незначительные оптимизации за счет удаления избыточных присваиваний, проверок
empty()
и isset()
.🔎 Поддержка файлов .env теперь встроена в PhpStorm, что устраняет необходимость хардкодинга этих значений в коде приложения.
🔎 В Laravel 11.38 добавлено правило валидации Fluent Email. Команда Laravel выпустила версию 11.38, в которой появилось правило валидации Fluent Email, возможность получения запроса формы или значения Fluent в виде массива, конвейерный метод
finally()
и многое другое.🔎Вышли PHP 8.4.3 и PHP 8.3.16! — Это баг-фикс релизы.
🔎Неделя Symfony #942 (13-19 января 2025 года)
#дайджест
🔥3
💻Как загрузить больше данных с помощью ajax пагинации при прокрутке в laravel 11
В этой статье показано шаг за шагом, как загрузить больше данных с помощью ajax-пагинации при прокрутке в приложении laravel 11
👉Читать гайд
#туториал
В этой статье показано шаг за шагом, как загрузить больше данных с помощью ajax-пагинации при прокрутке в приложении laravel 11
👉Читать гайд
#туториал
DevScriptSchool.Com
How To Load More Data Using Ajax Pagination On Scroll In Laravel 11 Example | DevScriptSchool.com
In this post, I will show you step by step How to Load More data using ajax pagination on scroll in laravel 11 application.
🥱2👍1
⬆️Загружаемые трейты
Знаете ли вы, что Laravel автоматически загружает трейты, если они реализуют метод
#совет
Знаете ли вы, что Laravel автоматически загружает трейты, если они реализуют метод
boot[TraitName]
? Это позволяет вам легко определить общую логику для событий модели 🚀#совет
🤔9👍1👾1
🗂️Библиотека: разделение базового файла PHPStan
Пакет предназначен для разделения базового файла PHPStan на несколько файлов, каждый из которых соответствует определенному идентификатору ошибки. Это позволяет более эффективно управлять и анализировать ошибки в вашем проекте.
Основные возможности:
🔸Разделение базового файла: Пакет разбивает общий файл
🔸Поддержка форматов: Поддерживаются как форматы
🔗 GitHub
#инструменты
Пакет предназначен для разделения базового файла PHPStan на несколько файлов, каждый из которых соответствует определенному идентификатору ошибки. Это позволяет более эффективно управлять и анализировать ошибки в вашем проекте.
Основные возможности:
🔸Разделение базового файла: Пакет разбивает общий файл
phpstan-baseline.neon
на отдельные файлы в директории baselines/
, где каждый файл соответствует конкретному идентификатору ошибки.🔸Поддержка форматов: Поддерживаются как форматы
neon
, так и php
для базовых файлов.🔗 GitHub
#инструменты
👍3