Библиотека пхпшника | PHP, Laravel, Symfony, CodeIgniter
11.3K subscribers
1.33K photos
20 videos
27 files
4.02K links
Все самое полезное для пхпшника в одном канале.

По рекламе: @proglib_adv

Учиться у нас: https://proglib.io/w/bca892d6

Для обратной связи: @proglibrary_feeedback_bot

РКН: https://gosuslugi.ru/snet/67a5d13cd6fa92100ee6f68b
Download Telegram
#дайджест #PHPdevjob

Вакансии PHP разработчиков уровня Junior

▪️ Junior Backend разработчик РНР (Laravel)
Удалёнка, Делаем IT
Подробнее

▪️ PHP-разработчик Junior / Middle
Офис (Санкт-Петербург), Off Group
Подробнее

Вакансии PHP разработчиков уровня Middle

▪️ PHP-разработчик
Офис (Екатеринбург), Goulash.Tech
Подробнее

▪️ Middle Backend Developer (PHP)
Удалёнка / Офис (Москва), Rusprofile
Подробнее

Вакансии PHP разработчиков уровня Senior

▪️ Senior PHP разработчик
Офис (Томск), Совкомбанк Технологии
Подробнее

▪️ PHP-разработчик (Laravel)
Удалёнка, Рососмотр
Подробнее

Понравились вакансии?
❤️ — да
🤔 — нет
😁3👍1
💭 Представьте, что за час вы можете научиться чему угодно. Что вы выберете?👇
👏1
Обновление Symfony 2.8 до версии 7.2 по проторенной дорожке

Обновление проектов на Symfony можно проводить двумя способами. Первый подразумевает использование только UPGRADE.md файлов при каждом релизе, заменяя устаревшие функции новыми. Такой подход позволяет поддерживать проект в актуальном состоянии, но его возможности ограничены. Второй подход более комплексный: он не только учитывает изменения, но и использует все современные функции фреймворка. Это делает код быстрее, проще в понимании и готовым к следующим обновлениям. Второй способ предпочтителен, так как повышает удобство работы с проектом и его дальнейшую поддержку.

Основные этапы обновления Symfony

1. Учет версий PHP и Symfony
Перед обновлением важно проверить совместимость версий Symfony и PHP. Например, Symfony 5.4 — последняя версия, поддерживающая PHP 7.4. Если проект работает на этой версии PHP, необходимо сначала обновить Symfony до 5.4, а затем перейти на PHP 8.0, чтобы продолжить обновление до Symfony 6.

2. Обновления в Symfony 3
🔸Новая структура каталогов. Вместо папок /app и /Resources все файлы теперь располагаются в корне проекта.
🔸Инъекция зависимостей через конструктор. Переход от использования глобального контейнера ($this->get('service')) к внедрению зависимостей в конструкторе. Этот шаг значительно упрощает архитектуру.
🔸Автозагрузка и автоконфигурация сервисов. С помощью _defaults: autowire: true можно сократить настройки в services.yml.
🔸Разделение монорепозитория. Вместо зависимости symfony/symfony рекомендуется добавлять в проект только те пакеты Symfony, которые действительно используются.

3. Нововведения Symfony 4
🟢PSR-4 автозагрузка сервисов. Можно автоматически регистрировать все классы из определенной директории, вместо ручной регистрации каждого сервиса.
🟢Переход с YAML на PHP для конфигураций. PHP-конфиги более удобны для работы с инструментами статического анализа и проверки на устаревшие методы.

4. Symfony 5 и новые атрибуты
От аннотаций к атрибутам. С версии 5.2 поддерживаются PHP-атрибуты, такие как #[Route] и #[Required], что упрощает написание и понимание кода.

Новая система аутентификации. Вместо Guard используется более современный механизм, представленный в Symfony 5.3.

5. Symfony 6 и 7
На версиях Symfony 6 и 7 акцент сделан на улучшение синтаксиса и использование новых возможностей PHP 8. Например:

#[TaggedIterator] позволяет автоматически внедрять набор сервисов.
#[Autowire] упрощает передачу переменных окружения в сервисы.
👍3🔥31
🤤 Икра черная, икра красная, а профессия — программирование

Сертификат на обучение от Proglib Academy — это крутой подарок для тех, кто интересуется IT, хочет освоить новую профессию и жить в шоколаде.

Почему наши курсы — хороший презент:

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

Сертификат оформляется за пару минут, и даже не нужно ломать голову над упаковкой.

🚀 Подарите возможность начать год с полезных знаний и карьерного роста → подробнее о сертификатах
Please open Telegram to view this post
VIEW IN TELEGRAM
🥱71🌚1
Какова цель функции «array_map» в PHP и как её использовать?

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

В этом примере функция square() применяется к каждому элементу массива $numbers с использованием array_map(), что приводит к созданию нового массива $squaredNumbers, где каждый элемент является квадратом соответствующего элемента исходного массива.

#вопросы_с_собеседований
4🔥4👍2
PHP 8.4 представил значительное обновление DOM-расширения, добавив возможность работы с элементами DOM через новый API CSS-селекторов. Эта функция, схожая с JavaScript-методами querySelector() и querySelectorAll(), упрощает выбор и обработку элементов в HTML и XML-документах.

Новый API CSS-селекторов позволяет выбрать элементы DOM с использованием знакомого синтаксиса, делая код более компактным и понятным.

Основные методы:

querySelector(): выбирает первый элемент, соответствующий заданному CSS-селектору.
$doc = new DOMDocument();
$doc->loadHTML('<div class="header">Header Content</div>');
$element = $doc->querySelector('.header');
echo $element->textContent; // Вывод: "Header Content"

querySelectorAll(): возвращает коллекцию всех элементов, подходящих под CSS-селектор.
$doc = new DOMDocument();
$doc->loadHTML('<div class="item">Item 1</div><div class="item">Item 2</div>');
$elements = $doc->querySelectorAll('.item');
foreach ($elements as $element) {
echo $element->textContent . "\n";
}
// Вывод:
// Item 1
// Item 2

Преимущества
🔸Простота синтаксиса: Использование CSS-селекторов упрощает код, избавляя от необходимости создавать сложные циклы для обхода DOM.
🔸Гибкость: Можно применять сложные селекторы, включая атрибуты, псевдоклассы и вложенные структуры.
🔸Сходство с JavaScript: Разработчики, знакомые с JavaScript, быстро адаптируются к новым методам PHP.

Ограничения
1. querySelectorAll() возвращает статический список узлов, который не обновляется при изменении DOM.
2. Поддержка сложных псевдоклассов, таких как :nth-child(), может быть ограничен
🔥22👍6👏31
🎨 Новый канал для вдохновения — UX in GIF

Мы запустили свежий канал, где делимся идеями для дизайна интерфейсов. Всё самое стильное, оригинальное и вдохновляющее теперь в одном месте.

📌 Чем полезен канал?

→ Идеи для дизайна интерфейсов.
→ Анимации, которые можно повторить или адаптировать.
→ Лёгкий способ искать вдохновение перед новым проектом.

👉 Подписывайтесь и вдохновляйтесь: UX in GIF
Please open Telegram to view this post
VIEW IN TELEGRAM
Знаете ли вы, что Laravel поставляется с методом «preventStrayRequests()», позволяющим избежать реальных запросов во время тестирования? Это удобно не только для сторонних API, но и для локальных API. В то время как ваши тесты могут пройти локально, потому что все окружение работает, они могут провалиться в CI-конвейере. Это происходит потому, что в конвейере CI обычно активен только тот сервис, который вы тестируете, поэтому выполнение фактических запросов к недоступным API приведет к неудаче вашего набора.
🎉7👾1
💬 А расскажите, над каким проектом работаете прямо сейчас?

Что это за продукт или, может быть, пэт-проект? За что вы в нём ответственны? Довольны ли вы результатом?

#интерактив
🤖 Познакомьтесь с Willow, современным квантовым чипом от Google

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

👉Подробнее
🔥9👍2😁1
🦑👨💻 Программист в «Игре в кальмара»: каковы твои шансы выжить?

Каждый день оптимизируешь процессы, автоматизируешь задачи и решаешь сложные проблемы. Но что, если тебе придется применять свои навыки, чтобы выжить?

Окажутся ли твои скрипты, алгоритмы и багфиксы полезными в критической ситуации?

👉 Пройти тест
5
💻 Эффективное проектирование программных систем

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

Наш интенсив «Архитектуры и шаблоны проектирования» научит вас строить программные системы без боли и стресса. Вы на практике освоите основные паттерны проектирования и прокачайте свои навыки архитектора программного обеспечения.

🎄Начните свой 2025 со скидкой 35% на все курсы. Это лучшее вложении уходящего года – https://proglib.io/w/cc21e069
🥰1🎉1
Front Controller и Page Controller в PHP

Архитектурные паттерны Front Controller и Page Controller помогают структурировать работу веб-приложений, но подходят для разных сценариев.

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

Как это работает:
🔸Единая точка входа: Весь входящий трафик перенаправляется на один файл, например, index.php, с помощью настроек веб-сервера (например, .htaccess для Apache или правил маршрутизации для Nginx).
🔸Маршрутизация: Контроллер анализирует URL и определяет, какой компонент должен обработать запрос. Это может быть реализовано вручную или с использованием библиотек маршрутизации.
🔸Делегирование: На основе маршрута запрос передается соответствующему контроллеру или методу, который выполняет обработку.
🔸Формирование ответа: Контроллер формирует ответ (обычно в формате HTML или JSON) и отправляет его клиенту.

Page Controller фокусируется на создании отдельного контроллера для каждой страницы или группы страниц. Это улучшает изоляцию кода и облегчает модификации, так как изменения в одной странице не затрагивают другие. Такой подход удобен для небольших и средних проектов, где каждая страница требует уникальной обработки.

Каждый контроллер выполняет следующие задачи:

🔹Обработка запроса: анализирует данные, поступающие от клиента.
🔹Логика страницы: проводит проверку данных, взаимодействует с моделями или выполняет вычисления.
🔹Формирование ответа: передаёт обработанные данные в представление для генерации итогового ответа.

Оба паттерна можно комбинировать, адаптируя их под конкретные потребности приложения.
🔥5🤔4👍2🌚1
Для чего используется переменная $_REQUEST?

Переменная $_REQUEST является суперглобальным массивом, который используется для сбора данных из HTML-форм или URL-адресов. Это комбинация массивов $_GET, $_POST и $_COOKIE. Собранные данные могут быть параметрами, переданными через методы HTTP GET или POST.

Вот разбор того, что представляет собой каждый из этих методов:

$_GET: Данные, отправленные через строку запроса URL. Они видны всем и имеют ограничение на объем передаваемых данных.

$_POST: Данные, отправленные через HTTP POST-запрос, обычно из HTML-формы с использованием метода POST. Эти данные не видны в URL-адресе и могут передавать больший объем данных по сравнению с $_GET.

$_COOKIE: Данные, хранящиеся в файлах cookie браузера пользователя.

$_REQUEST позволяет получать доступ к данным независимо от того, как они были отправлены, будь то запрос GET (параметры URL), запрос POST (отправка формы) или cookie. Однако полагаться исключительно на $_REQUEST иногда может привести к проблемам с безопасностью, поскольку он объединяет различные источники пользовательского ввода. Обычно рекомендуется использовать явно $_GET, $_POST или $_COOKIE в зависимости от предполагаемого использования и источника данных, поскольку это обеспечивает большую ясность и безопасность.
😁10👍21
Swagger — это широко используемый инструмент для документирования и тестирования API, который легко интегрируется с такими популярными веб-фреймворками, как Laravel, Spring Boot, CodeIgniter и ExpressJS.

В этой статье рассматривается интеграция Swagger с CodeIgniter.
👍2🤩1
Знаете ли вы, что для отслеживания медленных запросов можно использовать параметр whenQueryingForLongerThan? Вы можете установить порог в миллисекундах. Если запрос превысит порог, вы можете отправить уведомления или выпить кофе с тем, кто создал запрос 😂.
😁19👍5🤩3