Библиотека пхпшника | PHP, Laravel, Symfony, CodeIgniter @phpproglib Channel on Telegram

Библиотека пхпшника | PHP, Laravel, Symfony, CodeIgniter

@phpproglib


Все самое полезное для пхпшника в одном канале.

№4978948622

Список наших каналов: https://t.me/proglibrary/9197
Учиться у нас: https://proglib.io/w/bca892d6

Обратная связь: @proglibrary_feedback_bot

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

Библиотека пхпшника | PHP, Laravel, Symfony, CodeIgniter (Russian)

Для всех профессионалов и любителей PHP существует незаменимый ресурс - канал "Библиотека пхпшника | PHP, Laravel, Symfony, CodeIgniter". Здесь собрано все самое полезное для PHP-разработчика в одном месте. Независимо от того, являетесь ли вы опытным специалистом или только начинаете осваивать этот язык программирования, здесь вы найдете множество полезных материалов.

На канале представлены информация по PHP, Laravel, Symfony, CodeIgniter и многим другим аспектам разработки на этом языке. Вы сможете узнать о последних тенденциях, решениях проблем, а также обучиться новым техникам и приемам. Здесь вы найдете статьи, видеоуроки, обзоры, советы и многое другое, что поможет вам улучшить свои навыки и расширить знания в области PHP.

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

Присоединяйтесь к каналу "Библиотека пхпшника | PHP, Laravel, Symfony, CodeIgniter", чтобы быть в курсе всех событий, новинок и полезной информации по PHP-разработке. Улучшайте свои навыки, делитесь опытом и общайтесь с другими специалистами в области PHP. Начните свой путь к успеху в программировании с помощью этого ценного ресурса!

Библиотека пхпшника | PHP, Laravel, Symfony, CodeIgniter

19 Jan, 11:00


#memes

Библиотека пхпшника | PHP, Laravel, Symfony, CodeIgniter

19 Jan, 07:02


Taran — инструмент нагрузочного тестирования

Простой инструмент для нагрузочного тестирования веб-приложений.

Написан на PHP 8.1+ с использованием консольного фреймворка Laravel Zero.

🔗 GitHub

#библиотека

Библиотека пхпшника | PHP, Laravel, Symfony, CodeIgniter

18 Jan, 18:00


В Laravel v10.47 появились четыре новых метода: «whereAll», «whereAny», «orWhereAll» и «orWhereAny». Эти методы позволяют сравнивать значение с несколькими столбцами 🚀.

Библиотека пхпшника | PHP, Laravel, Symfony, CodeIgniter

18 Jan, 07:00


Почему финальные классы делают Rector и PHPStan более сильными

Добавление ключевого слова final в классы PHP помогает улучшить архитектуру кода, повысить его качество и упростить сопровождение. Этот подход стимулирует переход от наследования к композиции, снижает вероятность ошибок и делает рефакторинг менее рискованным. Рассмотрим, почему использование final так важно.

Проблемы классов без final
Когда классы не объявлены как final, появляется множество неопределенностей:

⚠️ Такие классы могут быть унаследованы, а методы переопределены, что усложняет анализ и изменение кода.
⚠️ Возникает страх модификации: разработчики не уверены, что изменения не приведут к сбоям в дочерних классах.
⚠️ Итогом становится отказ от улучшений кода, который превращается в трудно поддерживаемую «наследственную» базу.

Преимущества final
Объявление класса как final позволяет:

Упростить анализ кода. Инструменты вроде PHPStan и Rector могут точно определить, что класс не будет унаследован, а методы не будут изменены.
Удалить неиспользуемый код. Приватные методы, которые нигде не вызываются, можно безопасно удалить.
Повысить безопасность. Можно без риска добавлять типы возвращаемых значений и параметров, так как они не повлияют на дочерние классы (их просто не существует).
Снизить вероятность ошибок. Четкие границы использования класса исключают непредвиденное поведение.

Как это меняет подход к разработке?
Добавление final делает работу с кодом более уверенной и предсказуемой:

🛠️ Класс воспринимается как законченная, независимая сущность, которую можно модифицировать без страха.
🛠️ Легче находить и устранять устаревший или лишний код.
🛠️ Инструменты автоматически предлагают улучшения, которые делают код чище и проще.

Простое внедрение final в проект
Для упрощения перехода на final можно использовать инструменты автоматизации, такие как Rector. Они позволяют добавлять final только там, где это безопасно: для классов без наследников и моков. Процесс включает:

🧪 Пробное добавление final ко всем подходящим классам.
🧪 Проверку кода с помощью статического анализа.
🧪 Автоматическое исправление кода, если это необходимо.

Все изменения можно сохранить или откатить при необходимости.

Библиотека пхпшника | PHP, Laravel, Symfony, CodeIgniter

17 Jan, 12:32


Всем привет!

Мы ищем участников для интервью на тему «Обучение навыкам в IT»!

Кто нам нужен?
Вы недавно (в последние 6 месяцев) проходили курсы по техническим специальностям или математике.
Вы разработчик, стремящийся освоить Data Science или Machine Learning.

Что вас ждет?
Участие в интервью по Zoom, которое займет не больше 45 минут.📞
🤑 1500 рублей на карту за ваше время.
Уникальный шанс пообщаться с нашим CEO!😎

Как откликнуться?
✏️Напишите в личные сообщения @artem_ceo

Библиотека пхпшника | PHP, Laravel, Symfony, CodeIgniter

17 Jan, 07:03


🐳 Подборка шпаргалок по Docker: на заметку разработчику

Библиотека пхпшника | PHP, Laravel, Symfony, CodeIgniter

16 Jan, 18:01


🎄 Как вы встречали Новый год?

👍 — с друзьями на вечеринке
❤️ — в кругу семьи
👏 — в путешествии
🤩 — дома с фильмами и закусками

Библиотека пхпшника | PHP, Laravel, Symfony, CodeIgniter

16 Jan, 11:00


[Записки разработчика] Как легко установить расширения PHP с помощью PIE

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

PECL , хотя и полезен, кажется устаревшим. Не так просто разместить расширение в PHP, как в Composer. PIE — это инициатива PHP Foundation, призванная решить эту проблему, рассматривая расширения как пакеты Composer. Он упрощает процесс, обеспечивает лучшую кроссплатформенную согласованность и обеспечивает более простые обновления и управление расширениями PHP.

Библиотека пхпшника | PHP, Laravel, Symfony, CodeIgniter

16 Jan, 07:03


Неиспользуемые определения в статическом анализе Behat

Разработчик поделился опытом оптимизации работы с тестами Behat. Он заметил, что некоторые определения, используемые в сценариях тестирования, больше не применяются и могут быть удалены. Это позволяет уменьшить объем кода, который нужно поддерживать и обновлять. Однако стандартные инструменты Behat не позволяют автоматически находить такие неиспользуемые элементы.

Проблема

Определения для тестов в Behat задаются специальными аннотациями или атрибутами. Эти определения используются в сценариях тестирования, записанных в feature-файлах. Со временем, по мере изменения сценариев, некоторые определения могут остаться невостребованными, но разработчики часто не замечают этого из-за высокой нагрузки и сосредоточенности на основной работе.

Решение через статический анализ
Для выявления неиспользуемых определений был предложен инструмент статического анализа. Он выполняет следующие шаги:

🔸Сканирует PHP-файлы на наличие определений (аннотации и атрибуты).
🔸Выделяет точные совпадения, регулярные выражения и именованные маски.
🔸Сопоставляет их с содержимым feature-файлов.

Пример анализа:

🔹Найдено 1036 определений: 747 точных, 106 с регулярными выражениями, 181 с именованными масками.
🔹Обнаружены 2 неиспользуемых определения, которые можно удалить.

Инструмент для работы: Behastan
Для реализации этого подхода был создан инструмент Behastan, интегрированный в утилиту Rector Swiss Knife. Она поддерживает проекты вплоть до PHP 7.2 и проста в использовании:

1. Установите утилиту:
composer require rector/swiss-knife --dev


2. Запустите анализ:
vendor/bin/swiss-knife behastan tests


Этот инструмент помогает поддерживать чистоту кода и предотвращает накопление ненужных определений. Подключив его к CI/CD, можно автоматизировать процесс и избежать ручных проверок.

Библиотека пхпшника | PHP, Laravel, Symfony, CodeIgniter

16 Jan, 06:02


Самые полезные каналы для программистов в одной подборке!

Сохраняйте себе, чтобы не потерять 💾

🔥Для всех

Библиотека программиста — новости, статьи, досуг, фундаментальные темы
Книги для программистов
IT-мемы
Proglib Academy — тут мы рассказываем про обучение и курсы
Азбука айтишника — здесь мы познаем азы из мира программирования

🤖Про нейросети
Библиотека робототехники и беспилотников | Роботы, ИИ, интернет вещей
Библиотека нейрозвука | Транскрибация, синтез речи, ИИ-музыка
Библиотека нейротекста | ChatGPT, Gemini, Bing
Библиотека нейровидео | Sora AI, Runway ML, дипфейки
Библиотека нейрокартинок | Midjourney, DALL-E, Stable Diffusion

#️⃣C#

Книги для шарпистов | C#, .NET, F#
Библиотека шарписта — полезные статьи, новости и обучающие материалы по C#
Библиотека задач по C# — код, квизы и тесты
Библиотека собеса по C# — тренируемся отвечать на каверзные вопросы во время интервью и технического собеседования
Вакансии по C#, .NET, Unity Вакансии по PHP, Symfony, Laravel

☁️DevOps

Библиотека devops’а — полезные статьи, новости и обучающие материалы по DevOps
Вакансии по DevOps & SRE
Библиотека задач по DevOps — код, квизы и тесты
Библиотека собеса по DevOps — тренируемся отвечать на каверзные вопросы во время интервью и технического собеседования

🐘PHP

Библиотека пхпшника — полезные статьи, новости и обучающие материалы по PHP
Вакансии по PHP, Symfony, Laravel
Библиотека PHP для собеса — тренируемся отвечать на каверзные вопросы во время интервью и технического собеседования
Библиотека задач по PHP — код, квизы и тесты

🐍Python

Библиотека питониста — полезные статьи, новости и обучающие материалы по Python
Вакансии по питону, Django, Flask
Библиотека Python для собеса — тренируемся отвечать на каверзные вопросы во время интервью и технического собеседования
Библиотека задач по Python — код, квизы и тесты

Java

Книги для джавистов | Java
Библиотека джависта — полезные статьи по Java, новости и обучающие материалы
Библиотека Java для собеса — тренируемся отвечать на каверзные вопросы во время интервью и технического собеседования
Библиотека задач по Java — код, квизы и тесты
Вакансии для java-разработчиков

👾Data Science

Книги для дата сайентистов | Data Science
Библиотека Data Science — полезные статьи, новости и обучающие материалы по Data Science
Библиотека Data Science для собеса — тренируемся отвечать на каверзные вопросы во время интервью и технического собеседования
Библиотека задач по Data Science — код, квизы и тесты
Вакансии по Data Science, анализу данных, аналитике, искусственному интеллекту

🦫Go

Книги для Go разработчиков
Библиотека Go разработчика — полезные статьи, новости и обучающие материалы по Go
Библиотека Go для собеса — тренируемся отвечать на каверзные вопросы во время интервью и технического собеседования
Библиотека задач по Go — код, квизы и тесты
Вакансии по Go

🧠C++

Книги для C/C++ разработчиков
Библиотека C/C++ разработчика — полезные статьи, новости и обучающие материалы по C++
Библиотека C++ для собеса — тренируемся отвечать на каверзные вопросы во время интервью и технического собеседования
Библиотека задач по C++ — код, квизы и тесты
Вакансии по C++

💻Другие каналы

Библиотека фронтендера
Библиотека мобильного разработчика
Библиотека хакера
Библиотека тестировщика
Библиотека разработчика игр | Gamedev, Unity, Unreal Engine
Вакансии по фронтенду, джаваскрипт, React, Angular, Vue
Вакансии для мобильных разработчиков
Вакансии по QA тестированию
InfoSec Jobs — вакансии по информационной безопасности

📁Чтобы добавить папку с нашими каналами, нажмите 👉сюда👈

Также у нас есть боты:
Бот с IT-вакансиями
Бот с мероприятиями в сфере IT

Мы в других соцсетях:
🔸VK
🔸YouTube
🔸Дзен
🔸Facebook *
🔸Instagram *

* Организация Meta запрещена на территории РФ

Библиотека пхпшника | PHP, Laravel, Symfony, CodeIgniter

15 Jan, 18:00


Какие есть типы индексов в бд?

Использование индексов в базах данных подразумевает их создание, просмотр и удаление для оптимизации запросов. Индексы ускоряют операции чтения (SELECT), но могут замедлить операции записи (INSERT, UPDATE, DELETE).

Общий синтаксис создания индекса выглядит следующим образом:

CREATE INDEX имя_индексаON имя_таблицы (столбец1 [ASC|DESC], столбец2 [ASC|DESC]);


Вот основные типы индексов:

1. Кластерные индексы (Clustered Index)
🔸 Упорядочивают данные в таблице в соответствии с индексом.
🔸 Каждая таблица может иметь только один кластерный индекс, так как физический порядок строк определяется им.
🔸 Пример: Первичный ключ часто создается как кластерный индекс.

Преимущества:

🔹 Быстрый доступ к данным в диапазонных запросах.
🔹 Эффективно при выборке упорядоченных данных.

Недостатки:

🔹 Медленные операции вставки, обновления и удаления, так как данные переносятся для сохранения порядка.

2. Некластерные индексы (Non-Clustered Index)
🔸 Содержат указатели на фактические строки данных.
🔸 Таблица может иметь несколько некластерных индексов.
🔸 Пример: Индексация столбца, который часто используется в условиях WHERE.

Преимущества:

🔹 Быстрый доступ к конкретным значениям.
🔹 Может использоваться для оптимизации запросов с различными столбцами.

Недостатки:

🔹 Дополнительное использование дискового пространства.
🔹 Замедление операций вставки, обновления и удаления.

3. Уникальные индексы (Unique Index)
🔸 Обеспечивают уникальность значений в одном или нескольких столбцах.
🔸 Пример: Индекс на email-адрес в таблице пользователей.

Преимущества:

🔹 Поддерживает целостность данных.
🔹 Повышает производительность запросов.

Недостатки:

🔹 Невозможно хранить дублирующиеся значения.

4. Составные индексы (Composite Index)
🔸 Создаются на основе нескольких столбцов.
🔸 Пример: Индекс на столбцы (lastname, firstname).

Преимущества:

🔹 Улучшает производительность запросов, где используются все или часть индекса.

Недостатки:

🔹 Требует внимательного проектирования, чтобы учитывать порядок столбцов.

5. Полнотекстовые индексы (Full-Text Index)
🔸 Используются для поиска текстовых данных, таких как документы или длинные текстовые поля.
🔸 Пример: Полнотекстовый поиск по колонке description в таблице товаров.

Преимущества:

🔹 Оптимизирован для поиска ключевых слов или фраз.

Недостатки:

🔹 Поддерживается не всеми СУБД.
🔹 Может занимать значительное место.

6. Битмап-индексы (Bitmap Index)
🔸 Представляют данные в виде битовых карт.
🔸 Чаще всего используются в столбцах с низкой кардинальностью (небольшим количеством уникальных значений).

Преимущества:

🔹 Эффективны для аналитических запросов и запросов с большими объемами данных.

Недостатки:

🔹 Не подходят для таблиц с частыми изменениями данных.

7. XML/JSON Индексы
🔸 Оптимизируют поиск в данных, хранящихся в XML или JSON-форматах.

Преимущества:

🔹 Ускоряют сложные запросы по вложенным структурам.

Недостатки:

🔹 Занимают дополнительное пространство.
🔹 Ограниченная поддержка в некоторых СУБД.

8. Пространственные индексы (Spatial Index)
🔸 Используются для работы с географическими и пространственными данными.
🔸 Пример: Индексация координат в базе данных геоинформационных систем.

Преимущества:

🔹 Эффективны для запросов, связанных с расстояниями, полигонами и геометрией.

9. Хэш-индексы (Hash Index)
🔸 Используют хэш-функции для индексирования данных.
🔸 Пример: Подходит для равенства (например, WHERE column = value).

Преимущества:

🔹 Очень быстрые запросы на точное совпадение.

Недостатки:

🔹 Не поддерживают диапазонные запросы.

Библиотека пхпшника | PHP, Laravel, Symfony, CodeIgniter

15 Jan, 11:00


#memes

Библиотека пхпшника | PHP, Laravel, Symfony, CodeIgniter

15 Jan, 07:02


Простое решение для параллельного выполнения PHP-кода.

Этот пакет предназначен для параллельного выполнения кода и создания пула процессов для выполнения различных задач (например, queue workers).

Библиотека пхпшника | PHP, Laravel, Symfony, CodeIgniter

14 Jan, 18:00


#хочу_спросить

Задавайте любые вопросы о программировании и получайте ответы от пользователей. В комментариях под постом укажите #язык, #стек и/или #библиотеку, по которым задаете вопрос.

Библиотека пхпшника | PHP, Laravel, Symfony, CodeIgniter

14 Jan, 07:02


PSR-1: Основные стандарты кодинга в PHP

Почему одни проекты на PHP легко поддерживать, а другие превращаются в путаницу? Во многом это зависит от соблюдения единых стандартов кодирования. PSR-1 — базовый стандарт, который помогает создавать понятный и структурированный код. Рассмотрим основные принципы и способы их применения.

Правила PSR-1
1. Файлы и пространства имён

🔸Использовать только теги «<?php» и «<?=».
🔸Код должен быть записан в UTF-8 без BOM.
🔸Файлы должны либо объявлять символы (классы, функции, константы), либо вызывать побочные эффекты (например, вывод на экран, изменение настроек). Делать и то, и другое в одном файле не рекомендуется.

2. Имена пространств и классов
Названия классов должны быть в стиле StudlyCaps (каждое слово с заглавной буквы, без разделителей).
Константы классов записываются прописными буквами с подчёркиваниями, например MAX_SIZE.

3. Методы классов
Имена методов записываются в стиле camelCase (первое слово с маленькой буквы, последующие — с заглавной).
Пример реализации
На картинке представлен корректный пример кода, соответствующий PSR-1:
Что здесь показано:

🔹Пространство имён оформлено в стиле StudlyCaps.
🔹Имя класса соответствует стандарту StudlyCaps.
🔹Константы записаны заглавными буквами с подчёркиваниями.
🔹Имя метода оформлено в стиле camelCase.

Интеграция PSR-1 с современными инструментами
Для проверки и автоматизации соблюдения стандартов используются такие инструменты:

PHP_CodeSniffer: проверяет код на соответствие PSR-1. Запуск проверки через composer check-style.

Автоматическое исправление стиля: возможно с помощью composer fix-style.

PHPUnit: тестирование кода для обеспечения качества реализации.

Автозагрузка по PSR-4: упрощает управление файлами и пространствами имён.

Библиотека пхпшника | PHP, Laravel, Symfony, CodeIgniter

13 Jan, 20:02


🧑‍💻 Статьи для IT: как объяснять и распространять значимые идеи

Напоминаем, что у нас есть бесплатный курс для всех, кто хочет научиться интересно писать — о программировании и в целом.

Что: семь модулей, посвященных написанию, редактированию, иллюстрированию и распространению публикаций.

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

👉Материалы регулярно дополняются, обновляются и корректируются. А еще мы отвечаем на все учебные вопросы в комментариях курса.

Библиотека пхпшника | PHP, Laravel, Symfony, CodeIgniter

13 Jan, 18:00


Знаете ли вы, что Laravel позволяет запрашивать JSON-поля в базах данных, поддерживающих JSON-типы колонок? 🚀

Библиотека пхпшника | PHP, Laravel, Symfony, CodeIgniter

11 Jan, 18:00


Плохие практики в PHP-бэкэнде: примеры и советы

Эта статья может быть полезна как и тем, кто не работает с PHP постоянно, а вынужден лишь иногда что‑то время от времени «фиксить», так и тем для кого PHP является «родным» языком. Здесь собраны некоторые антипаттерны или плохие практики из‑за которых плохой код и появляется. Возможно вы узнаете здесь свои приемы и подходы и пересмотрите их.

Библиотека пхпшника | PHP, Laravel, Symfony, CodeIgniter

11 Jan, 11:00


👔💼 Как ответить на собеседовании, почему вы уволились с прошлого места работы: 9 вариантов ответа

А также примеры того, как говорить точно не надо 🌚

👉Читать

Библиотека пхпшника | PHP, Laravel, Symfony, CodeIgniter

11 Jan, 07:03


Laravel: Менее известные, но полезные команды Composer

Composer — это основной инструмент для управления зависимостями в PHP. Если вы работаете с Laravel, то наверняка уже знакомы с такими командами, как composer install и composer update. Однако у Composer есть менее известные, но очень полезные команды, которые могут значительно упростить вашу работу над проектом.

1. composer outdated
Эта команда показывает, какие зависимости вашего проекта устарели. Она выводит список всех пакетов, для которых доступны более новые версии, указывая текущую и последнюю версии. Это удобный способ следить за обновлениями и безопасностью проекта без необходимости сразу обновлять все пакеты.

2. composer show
С помощью этой команды можно получить подробную информацию обо всех установленных пакетах. Кроме того, если указать конкретное имя пакета, можно узнать его описание, текущую версию и зависимости. Например:

composer show backpack/crud

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

3. composer why
Если вы хотите понять, почему определённый пакет установлен в проекте, используйте команду composer why. Она покажет, какие зависимости требуют установки данного пакета. Это особенно полезно для анализа сложной цепочки зависимостей.

4. composer licenses
Для проверки лицензий всех установленных зависимостей существует команда composer licenses. Она помогает убедиться, что все используемые пакеты соответствуют необходимым требованиям по лицензированию, что особенно важно при работе с открытым исходным кодом.

5. composer check-platform-reqs
При работе на разных платформах может возникнуть необходимость убедиться, что все необходимые расширения PHP установлены. Команда composer check-platform-reqs проверяет, соответствует ли ваша система требованиям, указанным в composer.json. Она также проверяет версию PHP и расширения.

Библиотека пхпшника | PHP, Laravel, Symfony, CodeIgniter

10 Jan, 18:02


Первый #дайджест новостей по PHP в этом году:

🔎Обзор года Symfony 2024

🔎PHP 8.4.2 выпущен! — Команда разработчиков PHP объявляет о скорой доступности PHP 8.4.2. Это релиз, исправляющий ошибки. Всем пользователям PHP 8.4 рекомендуется обновиться до этой версии.

🔎Новая площадка Twig Playground — Новый инструмент, который позволяет вам тестировать и экспериментировать с шаблонами Twig в среде песочницы. Он полностью основан на веб-технологиях и не имеет бэкенда.

🔎Новые методы отношений Eloquent в Laravel 11.37 — На прошлой неделе команда Laravel выпустила версию 11.37, в которой появились новые методы Eloquent relation, опция игнорирования регистра в Str::is(), добавление признака Dumpable к экземпляру Uri и многое другое.

🔎Неделя Symfony #940 (30 декабря 2024 — 5 января 2025)

Библиотека пхпшника | PHP, Laravel, Symfony, CodeIgniter

10 Jan, 07:04


🔄 Как данные перемещаются по сети: шпаргалка по инкапсуляции и деинкапсуляции

👉 Источник

Библиотека пхпшника | PHP, Laravel, Symfony, CodeIgniter

09 Jan, 18:00


🔥 Бесплатный курс по фулстек-разработке — реальность

Под Новый год Дед Мороз приносит подарки, а наши подписчики — собственные курсы! Сергей Дмитриев, который занимается коммерческой разработкой уже 15 лет, поделился с нами курсом по созданию веб-сервиса с нуля. В курс входит 141 урок, 28 часов видео, исходный код и чат поддержки для участников.

👉 Подробнее о курсе читайте на Хабре или в телеграм-канале Сергея

Библиотека пхпшника | PHP, Laravel, Symfony, CodeIgniter

09 Jan, 15:00


👩‍💻 PHP 8.4 уже здесь! Что нового? Мы всё расскажем.

💛Узнайте, какие функции добавлены, как они изменят код и ускорят работу.
💛Готовьтесь к апгрейду знаний: от разборов новых возможностей до лайфхаков применения!

Спикер Александр Пряхин — технический руководитель юнита в Авито, ITIL4 Certified.

Приходите на открытый урок 13 января в 20:00 мск. Участники получат скидку на курс «PHP Developer. Professional».

➡️ Регистрация открыта: https://clck.ru/3FeN5x

Реклама. ООО «Отус онлайн-образование», ОГРН 1177746618576

Erid 2Vtzqwm6ozT

Библиотека пхпшника | PHP, Laravel, Symfony, CodeIgniter

09 Jan, 11:01


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

Другой вариант — использовать внутри регекса символы \Q и \E: они превращают все специальные символы в буквенное значение.

Библиотека пхпшника | PHP, Laravel, Symfony, CodeIgniter

09 Jan, 07:02


Эффективный рендеринг изображений Base64 в PDF-файлах Laravel с помощью DomPDF

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

Проблема
DomPDF требует, чтобы изображения были встроены в HTML в виде base64-строк. Однако загрузка нескольких изображений в память одновременно может быстро превысить лимит, установленный для PHP. Это особенно критично при генерации больших документов, таких как каталоги или отчёты.

Решение
Предложенный подход включает:

🔸Обработку изображений небольшими частями (чтобы избежать переполнения памяти).
🔸Гибкую обработку отсутствующих изображений.
🔸Поддержку как локальных, так и удалённых файлов.
🔸Преобразование изображений в формат base64, совместимый с DomPDF.

Основные элементы решения
1. Управление памятью
Перед началом обработки устанавливается разумный лимит памяти, например, 256 МБ. Это позволяет избежать чрезмерного использования ресурсов сервера, оставаясь в рамках допустимых ограничений.

2. Постепенная загрузка изображений
Вместо того чтобы загружать весь файл в память сразу, изображение читается по частям, например, блоками по 8 КБ. Такой подход предотвращает резкий рост потребления памяти, что особенно полезно для работы с большими изображениями.

3. Обработка отсутствующих изображений
Если файл изображения не найден, вместо ошибки возвращается base64-код прозрачного 1x1 пикселя. Это позволяет избежать сбоев в процессе генерации PDF.

Библиотека пхпшника | PHP, Laravel, Symfony, CodeIgniter

08 Jan, 17:59


Что такое OWASP?

OWASP — это акроним, расшифровывающийся как Open Web Application Security Project.

OWASP — это некоммерческая организация, которая занимается исследованием и обеспечением безопасности веб-приложений. Она обладает обширным контентом, включающим методологии, инструменты, стандарты и руководства по обеспечению безопасности веб-приложений.

В рамках OWASP разработаны множество проектов, включающих в себя руководства по безопасности, топ-10 уязвимостей веб-приложений, инструменты для сканирования и тестирования безопасности, образцы кода и многое другое.

Знание OWASP и умение применять его рекомендации является важным для php-разработчика, так как помогает защитить веб-приложения от распространенных уязвимостей, таких как инъекции SQL, межсайтовый скриптинг (XSS), утечка конфиденциальной информации и другие.

Библиотека пхпшника | PHP, Laravel, Symfony, CodeIgniter

08 Jan, 11:00


#memes

Библиотека пхпшника | PHP, Laravel, Symfony, CodeIgniter

08 Jan, 07:02


Opis Closure 4.0.0

Этот мажорный релиз представляет собой полную переработку библиотеки и обеспечивает поддержку функций PHP 8.x, таких как атрибуты, перечисления, свойства read-only, именованные параметры и т.д.

#новость

Библиотека пхпшника | PHP, Laravel, Symfony, CodeIgniter

07 Jan, 18:00


Привет!

Мы хотели бы поближе с вами познакомиться! Будем очень признательны за ваши ответы на следующие вопросы!

Библиотека пхпшника | PHP, Laravel, Symfony, CodeIgniter

07 Jan, 07:02


«Наконец я попробовал Pest для PHP и Laravel, а затем перешел на него.»

Pest — это современный инструмент для тестирования в PHP, созданный в 2021 году Нуну Мадуро, инженером Laravel. Pest быстро стал популярным благодаря своей интеграции с экосистемой Laravel и упрощению процесса тестирования. Основанный на PHPUnit, Pest сохраняет его мощь, но добавляет более удобный и лаконичный синтаксис.

Основное отличие Pest — это использование замыканий вместо классов для определения тестов. Такой подход делает код компактнее и проще для восприятия. Например, тест, проверяющий истинность условия, в Pest выглядит как одна строка, а не как целый класс, что ускоряет разработку и облегчает чтение кода.

Важной частью успеха Pest стала его привлекательная консоль, которая предоставляет четкий и понятный вывод тестов. Pest также поддерживает большинство возможностей PHPUnit, включая провайдеры данных, хуки (аналог setUp и tearDown), фильтрацию и группировку тестов. Однако Pest пошел дальше, предложив функции, которые делают его уникальным:

🔧 Тестирование архитектуры. Позволяет задавать архитектурные правила для кода, например, обязательное использование строгого режима.
📸 Снапшоты. Удобны для проверки неизменности данных.
🚀 Стресс-тестирование. Полезно для проверки производительности приложений.
🛠️ Плагины. Pest активно поддерживает расширяемость, что позволяет добавлять новые функции через сторонние модули.

Эволюция Pest связана с его глубокой интеграцией в Laravel-сообщество. Многие популярные проекты, такие как Spatie, Livewire и Filament, перешли на Pest, что сделало его стандартом де-факто в экосистеме Laravel. Благодаря обратной совместимости с PHPUnit, переход на Pest не требует кардинального изменения существующих тестов, что облегчает его внедрение.

Таким образом, Pest стал не просто альтернативой PHPUnit, а его современной интерпретацией с улучшенным синтаксисом и расширенными возможностями. Если вы разрабатываете на PHP и еще не пробовали Pest, его простота и мощь делают его достойным внимания инструментом.

Библиотека пхпшника | PHP, Laravel, Symfony, CodeIgniter

06 Jan, 18:00


Будьте осторожны при использовании whereYear; даже если ваш столбец проиндексирован, он не будет использован, и база данных выполнит полное сканирование таблицы. Вместо этого лучше использовать диапазоны 🚀.

Библиотека пхпшника | PHP, Laravel, Symfony, CodeIgniter

06 Jan, 07:03


Почему вам стоит задуматься о переходе на PHP 8.4?

В этой статье на медиуме рассматриваются основные причины, по которым вы можете захотеть обновить свои PHP-проекты до версии 8.4.

Библиотека пхпшника | PHP, Laravel, Symfony, CodeIgniter

05 Jan, 18:00


Как работает HTTP Kernel в Symfony?

HTTP Kernel (HTTP ядро) в Symfony — это ключевой компонент фреймворка, отвечающий за обработку HTTP-запросов и формирование ответов. Он реализует шаблон проектирования Front Controller и координирует весь жизненный цикл запроса и ответа.

Основной процесс работы HTTP Kernel

1. Получение запроса:
Входной файл (index.php) получает HTTP-запрос и передаёт его в ядро.

2. Маршрутизация:
Ядро использует компонент маршрутизации, чтобы определить, какой маршрут соответствует запросу, и какой контроллер должен быть вызван.

3. Вызов контроллера:
После определения маршрута вызывается соответствующий контроллер, который обрабатывает запрос и возвращает данные.

4. Формирование ответа:
Контроллер возвращает объект ответа, который может быть модифицирован дополнительными обработчиками (например, добавление заголовков).

5. Отправка ответа:
HTTP ядро отправляет готовый ответ обратно клиенту.

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

Основные компоненты
🔹 Запрос и ответ:
Symfony использует объект запроса, который содержит все данные HTTP-запроса (заголовки, параметры, тело и т.д.), и объект ответа, который формирует конечный HTTP-ответ.

🔹 Маршрутизация:
Компонент маршрутизации сопоставляет URL запроса с маршрутами, указанными в конфигурации, и определяет, какой контроллер и параметры использовать.

🔹 Контроллер:
Контроллер — это метод, который выполняет бизнес-логику, принимает параметры из запроса и возвращает ответ.

🔹 События:
Во время обработки запроса ядро генерирует события, на которые могут подписываться обработчики. Это позволяет изменять запрос, контроллер или ответ на разных этапах обработки.

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

Этапы обработки запроса
✔️Клиент отправляет HTTP-запрос.
✔️Ядро принимает запрос и вызывает маршрутизацию.
✔️Контроллер выполняет бизнес-логику.
✔️Генерируется HTTP-ответ.
✔️Ответ модифицируется при необходимости (например, добавляются заголовки).
✔️Готовый ответ отправляется клиенту.
✔️Выполняются завершающие задачи.

#вопросы_с_собеседований

Библиотека пхпшника | PHP, Laravel, Symfony, CodeIgniter

05 Jan, 10:41


#memes

Библиотека пхпшника | PHP, Laravel, Symfony, CodeIgniter

05 Jan, 07:01


PHP Frameworks Bench

Библиотека для создания бенчмарков внутри PHP-фреймворков.

Библиотека пхпшника | PHP, Laravel, Symfony, CodeIgniter

04 Jan, 18:02


Выжимаем максимум скорости из PHP

При запуске PHP-приложений крайне важно правильно выбрать веб-сервер. Чтобы объективно оценить производительность популярных решений, было проведено тестирование не на искусственных данных, а на реальных примерах. Цель исследования заключалась не в создании рейтинга веб-серверов для PHP-приложений. Была цель показать, в каких условиях каждый сервер сможет продемонстрировать наилучшие результаты.

Библиотека пхпшника | PHP, Laravel, Symfony, CodeIgniter

04 Jan, 07:03


Моки — это инструмент для тестирования поведения объектов в изолированных условиях. Они позволяют заменить реальные зависимости на их имитацию, чтобы избежать обращения к внешним ресурсам, которые могут замедлить выполнение тестов.

Зачем нужны моки
Основная задача моков — проверять взаимодействие между объектами. Это достигается за счёт возможности задать ожидаемое поведение и проверить, насколько реальные вызовы совпадают с этими ожиданиями. Например, можно проверить, сколько раз вызывается метод и с какими параметрами.

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

2. Мокирование конкретных классов вместо интерфейсов
Моки лучше создавать на основе интерфейсов, так как они реже меняются, чем реализации.

3. Чрезмерное использование моков
Излишнее мокирование усложняет тесты и может указывать на проблемы с проектированием.

4 .Маскировка плохого дизайна
Если моки используются для тестирования тесно связанных компонентов, это может быть признаком нарушения принципа разделения ответственности.

5. Полная зависимость от моков
Хотя моки полезны, они не заменяют другие виды тестов, такие как интеграционные или end-to-end тесты.

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

Библиотека пхпшника | PHP, Laravel, Symfony, CodeIgniter

04 Jan, 06:02


⚙️ Подпишись на нашу еженедельную email-рассылку, чтобы быть в курсе последних открытий и тенденций в мире бэкенда.

В еженедельных письмах ты найдешь:
● Языки программирования и фреймворки для бэкенда
● Архитектура и проектирование серверных приложений
● Базы данных и управление данными
● Безопасность и защита данных
● Облачные технологии и DevOps
● API и интеграции
● Тестирование и отладка
● Инструменты и утилиты для бэкенд-разработчиков
● Лучшие практики и паттерны проектирования

👉Подписаться👈

Библиотека пхпшника | PHP, Laravel, Symfony, CodeIgniter

03 Jan, 07:03


Создание шаблона приложений Symfony 7 с помощью FrankenPHP, Docker, PostgreSQL и php 8.4

В статье рассказывается, как создать универсальный шаблон для запуска проектов на Symfony, таких как монолитные приложения или API. Основой является сервер приложений FrankenPHP, написанный на Go, с использованием PostgreSQL в качестве реляционной базы данных. Для организации работы контейнеров используется Docker и Compose.

Основные этапы разработки:
1. Организация структуры проекта
Проект имеет простую структуру: одна папка для файлов Docker и другая для исходного кода Symfony. Основной файл конфигурации compose.yml размещается в корне проекта. Он описывает два основных контейнера:

🔸База данных PostgreSQL.
🔸Приложение Symfony, использующее FrankenPHP.

2. Настройка окружения для разработки
Для разработки создается файл compose.override.yml, позволяющий настраивать дополнительные порты, монтировать директории и включать Xdebug. Это упрощает отладку и разработку.

3. Создание Dockerfile для приложения
Dockerfile имеет несколько стадий:

🔹Базовый образ на основе Debian Bookworm и FrankenPHP.
🔹Разработка: включает зависимости, такие как Xdebug, и файлы конфигурации для разработки.
🔹Продакшн: оптимизированный образ с использованием OPcache и минимизацией зависимостей.

4. Автоматизация процессов с помощью Composer
Composer используется не только для управления зависимостями, но и для выполнения скриптов, таких как установка контейнеров, миграция базы данных, загрузка фикстур и многое другое.

5. Конфигурация FrankenPHP
FrankenPHP работает через прокси-сервер Caddy. Используются конфигурации, рекомендованные в официальной документации, с возможностью настройки количества рабочих процессов и режима работы.

6. Symfony и дополнительные инструменты
Установлены зависимости, обеспечивающие высококлассный опыт разработки, включая Code Sniffer, phpstan, Rector, а также пакеты Symfony, такие как Doctrine ORM, Twig и инструменты для тестирования.

7. Оптимизация для продакшна
Для продакшна предусмотрена отдельная стадия сборки, где уменьшается нагрузка за счет использования OPcache и других оптимизаций. Создается файл composer.override.prod.yml, описывающий настройки для продакшн-окружения.

Библиотека пхпшника | PHP, Laravel, Symfony, CodeIgniter

02 Jan, 11:00


💻📈 Итоги года Proglib: 2024 год в цифрах и достижениях

«Библиотека программиста» подводит итоги 2024 года: 415 экспертных статей и миллион просмотров ежемесячно. Разбираем ключевые достижения, лучшие материалы и делимся планами развития.

👉 Читать статью
👉 Зеркало

P. S. Ну просто не могли не прикрепить мем года к этому посту 🫶

Библиотека пхпшника | PHP, Laravel, Symfony, CodeIgniter

01 Jan, 13:01


❄️🎄🤔 Чем заняться программисту на эти праздниках?

Можно посмотреть фильм из нашей подборки (в ней нет социальной сети и матрицы, потому что их уже все смотрели):

Военные игры (1983)
Хакеры (1995)
Пираты Силиконовой Долины (1999)
Кадры (2013)
Сноуден (2016)
Кто я (2014)
Черное зеркало. Бандерснэтч (2018)

Библиотека пхпшника | PHP, Laravel, Symfony, CodeIgniter

01 Jan, 07:05


Давайте признавайтесь в комментариях — что вам подарили? 👇

Библиотека пхпшника | PHP, Laravel, Symfony, CodeIgniter

31 Dec, 13:31


#дайджест #PHPdevjob

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

▪️ Junior PHP-разработчик
Гибрид (Москва), Издательство МОЗАИКА-СИНТЕЗ
Подробнее

▪️ Junior backend разработчик (PHP, laravel)
Офис (Санкт-Петербург), НаПоправку
Подробнее

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

▪️ Backend-разработчик PHP (Middle)
Удалёнка, Simtech Development
Подробнее

▪️ Middle/Senior PHP-разработчик (Laravel)
Офис (Москва, Ростов-на-Дону) / Удалёнка, A3F Group
Подробнее

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

▪️ Senior PHP Developer
Удалёнка, BORK
Подробнее

▪️ Team Lead PHP Backend Developer (МК+ОТА/ЦТ)
Удалёнка / Офис (Санкт-Петербург), Bnovo
Подробнее

Понравились вакансии?
❤️ — да
🤔 — нет

Библиотека пхпшника | PHP, Laravel, Symfony, CodeIgniter

31 Dec, 07:03


Создание типозащищенной функции pipe() в PHP

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

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

Хотя реализация в PHP сложнее и менее изящна, чем в Scala, она может быть полезна для разработчиков, которым нравится функциональный стиль программирования и необходимость писать чистый и логичный код.

Библиотека пхпшника | PHP, Laravel, Symfony, CodeIgniter

30 Dec, 20:03


🧑‍💻 Статьи для IT: как объяснять и распространять значимые идеи

Напоминаем, что у нас есть бесплатный курс для всех, кто хочет научиться интересно писать — о программировании и в целом.

Что: семь модулей, посвященных написанию, редактированию, иллюстрированию и распространению публикаций.

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

👉Материалы регулярно дополняются, обновляются и корректируются. А еще мы отвечаем на все учебные вопросы в комментариях курса.

Библиотека пхпшника | PHP, Laravel, Symfony, CodeIgniter

30 Dec, 18:08


Знаете ли вы, что для отслеживания медленных запросов можно использовать параметр whenQueryingForLongerThan? Вы можете установить порог в миллисекундах. Если запрос превысит порог, вы можете отправить уведомления или выпить кофе с тем, кто создал запрос 😂.

Библиотека пхпшника | PHP, Laravel, Symfony, CodeIgniter

30 Dec, 07:04


Swagger — это широко используемый инструмент для документирования и тестирования API, который легко интегрируется с такими популярными веб-фреймворками, как Laravel, Spring Boot, CodeIgniter и ExpressJS.

В этой статье рассматривается интеграция Swagger с CodeIgniter.

Библиотека пхпшника | PHP, Laravel, Symfony, CodeIgniter

29 Dec, 17:59


Для чего используется переменная $_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 в зависимости от предполагаемого использования и источника данных, поскольку это обеспечивает большую ясность и безопасность.

Библиотека пхпшника | PHP, Laravel, Symfony, CodeIgniter

29 Dec, 11:00


#memes

Библиотека пхпшника | PHP, Laravel, Symfony, CodeIgniter

29 Dec, 07:02


XML Wrangler

XML Wrangler — это библиотека, предназначенная для облегчения чтения и записи XML.

Библиотека пхпшника | PHP, Laravel, Symfony, CodeIgniter

28 Dec, 18:00


PHP Typed: Маленький Composer пакет, который нарушает PHP правила ради вас

Этот пакет использует немного магии вне Хогвартса, и будет действительно полезен любителям строгой типизации в PHP.

Библиотека пхпшника | PHP, Laravel, Symfony, CodeIgniter

28 Dec, 07:03


Front Controller и Page Controller в PHP

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

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

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

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

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

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

Оба паттерна можно комбинировать, адаптируя их под конкретные потребности приложения.

Библиотека пхпшника | PHP, Laravel, Symfony, CodeIgniter

28 Dec, 06:18


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

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

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

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

Библиотека пхпшника | PHP, Laravel, Symfony, CodeIgniter

27 Dec, 18:00


🦑👨💻 Программист в «Игре в кальмара»: каковы твои шансы выжить?

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

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

👉 Пройти тест

Библиотека пхпшника | PHP, Laravel, Symfony, CodeIgniter

27 Dec, 07:01


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

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

👉Подробнее

Библиотека пхпшника | PHP, Laravel, Symfony, CodeIgniter

26 Dec, 18:00


💬 А расскажите, над каким проектом работаете прямо сейчас?

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

#интерактив

Библиотека пхпшника | PHP, Laravel, Symfony, CodeIgniter

26 Dec, 11:00


Знаете ли вы, что Laravel поставляется с методом «preventStrayRequests()», позволяющим избежать реальных запросов во время тестирования? Это удобно не только для сторонних API, но и для локальных API. В то время как ваши тесты могут пройти локально, потому что все окружение работает, они могут провалиться в CI-конвейере. Это происходит потому, что в конвейере CI обычно активен только тот сервис, который вы тестируете, поэтому выполнение фактических запросов к недоступным API приведет к неудаче вашего набора.

Библиотека пхпшника | PHP, Laravel, Symfony, CodeIgniter

26 Dec, 09:39


🎨 Новый канал для вдохновения — UX in GIF

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

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

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

👉 Подписывайтесь и вдохновляйтесь: UX in GIF

Библиотека пхпшника | PHP, Laravel, Symfony, CodeIgniter

26 Dec, 06:59


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(), может быть ограничен

Библиотека пхпшника | PHP, Laravel, Symfony, CodeIgniter

25 Dec, 18:00


Какова цель функции «array_map» в PHP и как её использовать?

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

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

#вопросы_с_собеседований

Библиотека пхпшника | PHP, Laravel, Symfony, CodeIgniter

25 Dec, 12:01


🤤 Икра черная, икра красная, а профессия — программирование

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

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

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

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

🚀 Подарите возможность начать год с полезных знаний и карьерного роста → подробнее о сертификатах

Библиотека пхпшника | PHP, Laravel, Symfony, CodeIgniter

25 Dec, 11:01


#memes

Библиотека пхпшника | PHP, Laravel, Symfony, CodeIgniter

25 Dec, 09:00


Облако — это конструктор!

The Art of Programming — подкаст об ​​инструментах, технике и разработке ПО. По следам конференции HighLoad 2024 записали новый выпуск, в котором обсуждаем индустрию публичных облаков.

Вместе с Данилой Дюгуровым, CTO MTC Web Services, говорим о новостях индустрии, создании новых облачных платформ, потенциале рынка и принципах формирования топовых команд разработки.

🎧Слушайте The Art of Programming на всех популярных подкаст-площадках.

Библиотека пхпшника | PHP, Laravel, Symfony, CodeIgniter

25 Dec, 07:02


Обновление 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] упрощает передачу переменных окружения в сервисы.

Библиотека пхпшника | PHP, Laravel, Symfony, CodeIgniter

24 Dec, 18:00


💭 Представьте, что за час вы можете научиться чему угодно. Что вы выберете?👇

Библиотека пхпшника | PHP, Laravel, Symfony, CodeIgniter

24 Dec, 12:48


#дайджест #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)
Удалёнка, Рососмотр
Подробнее

Понравились вакансии?
❤️ — да
🤔 — нет

Библиотека пхпшника | PHP, Laravel, Symfony, CodeIgniter

24 Dec, 07:01


Использование технологии withoutWrapping для сглаживания ответов API

Ресурсы API Laravel по умолчанию оборачивают ответы в ключ 'data'. Хоть это и полезно для многих сценариев, иногда требуется более плоская структура ответа, и тогда вы можете отключить обертывание ресурсов.

Библиотека пхпшника | PHP, Laravel, Symfony, CodeIgniter

23 Dec, 18:00


«Я создал одно и то же приложение на всех версиях PHP (1995-2025)»

Здесь автор создает приложение на PHP 2 и постепенно улучшает его, параллельно рассказывая о нововведениях каждой вышедшей версии языка. Интересное видео на вечер

Библиотека пхпшника | PHP, Laravel, Symfony, CodeIgniter

23 Dec, 07:04


Написание высококачественных тестов

В статье обсуждается важность написания качественных тестов и подчеркивается, что их часто недооценивают. Автор отмечает, что разработчики нередко просто проверяют наличие тестов, вместо того чтобы уделять внимание их качеству. Это может приводить к проблемам: тесты оказываются ненадежными, сложными для понимания или слишком долгими в выполнении.

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

Стремление к 100% покрытию кода
Автор критикует подход, при котором допускается, например, 90% покрытие, так как это создает иллюзию надежности. Вместо этого предлагается избегать ненужного кода (например, геттеров и сеттеров, которые не используются) и исключать из анализа строки, которые невозможно покрыть тестами.

Написание качественных проверок (assertions)
Тесты пишутся для проверки поведения кода, и правильная формулировка проверок имеет решающее значение. Подчеркивается важность понятных сообщений об ошибках, которые помогают быстро разобраться в проблеме. Он критикует использование слишком общих проверок, которые затрудняют диагностику, и рекомендует выбирать подходящие инструменты, такие как специализированные проверки в PHPUnit.

Снапшот-тестирование
Автор также обсуждает методику снапшот-тестирования, которая часто используется в фронтенд-разработке. Она фиксирует текущее состояние компонентов и позволяет быстро выявить изменения. Однако метод имеет недостатки, такие как хрупкость тестов и неочевидность их намерений.

Рекомендации
Для улучшения тестирования автор советует:

🔸Упрощать код тестов, оставляя только необходимое.
🔸Стремиться к 100% покрытию кода, исключая из анализа непокрываемые участки.
🔸Использовать правильные проверки, которые дают понятные сообщения об ошибках.

Библиотека пхпшника | PHP, Laravel, Symfony, CodeIgniter

22 Dec, 18:00


[Git] Зачем команда git bundle?

Команда git bundle используется для упаковки репозитория или его части в один файл. Этот файл можно передать, скопировать или сохранить, а затем использовать для восстановления или обновления репозитория в другом месте. Основное назначение этой команды — перенос изменений без необходимости наличия сетевого подключения, например, в случаях, когда доступ к удалённому репозиторию ограничен.

Основные случаи использования git bundle:

1. Передача репозитория офлайн:

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

2.Обновление репозитория офлайн:

Если нужно синхронизировать изменения между двумя репозиториями без доступа к сети, можно упаковать изменения в bundle и передать его.

3. Создание резервной копии:

git bundle может использоваться для создания архива репозитория с сохранением всей истории.

4. Доставка изменений:

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

Примеры использования:
Создание полного архива репозитория:

git bundle create my-repo.bundle --all

Здесь флаг --all указывает, что нужно упаковать все ветки и историю.

Упаковка определённой ветки:

git bundle create my-feature.bundle main

Это создаст архив с содержимым только ветки main.

Проверка содержимого bundle:

git bundle verify my-repo.bundle

Проверяет, что файл корректен и пригоден для использования.

Клонирование из bundle:

git clone my-repo.bundle my-new-repo

Библиотека пхпшника | PHP, Laravel, Symfony, CodeIgniter

22 Dec, 11:03


#memes

Библиотека пхпшника | PHP, Laravel, Symfony, CodeIgniter

22 Dec, 07:03


ResultTransformer в Symfony проектах

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

Один из таких подходов связан с использованием функциональности Doctrine, позволяющей возвращать готовые DTO, что избавляет разработчика от ручной работы по преобразованию данных. Этот процесс, известный как ResultTransformer, автоматизирует преобразование данных в DTO, значительно упрощая задачу программиста.

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

Библиотека пхпшника | PHP, Laravel, Symfony, CodeIgniter

22 Dec, 06:01


Вакансии «Библиотеки программиста» — ждем вас в команде!

Мы постоянно растем и развиваемся, поэтому создали отдельную страницу, на которой будут размещены наши актуальные вакансии. Сейчас мы ищем:
👉контент-менеджеров для ведения телеграм-каналов

Подробности тут

Мы предлагаем частичную занятость и полностью удаленный формат работы — можно совмещать с основной и находиться в любом месте🌴

Ждем ваших откликов 👾

Библиотека пхпшника | PHP, Laravel, Symfony, CodeIgniter

21 Dec, 18:01


Знаете ли вы, что в Laravel есть трейт Prunable, позволяющий удалять записи, в том числе и мягко удаленные, на основе заданного вами условия? 🚀

Библиотека пхпшника | PHP, Laravel, Symfony, CodeIgniter

21 Dec, 07:03


Оптимизированная ленивая загрузка в Symfony Doctrine для повышения производительности

Во время работы над проектом Symfony возникла проблема с производительностью из-за неожиданного поведения Doctrine. В одной из сущностей была настроена связь OneToOne с параметром fetch="LAZY», чтобы загружать связанные данные только при необходимости. Однако Doctrine загружал связанные сущности заранее, что приводило к избыточной нагрузке.

Проблема
Пример: сущность Store имела связь OneToOne с сущностью StoreDetail, содержащей метаданные о магазине. Даже при включённой ленивой загрузке Doctrine автоматически добавлял JOIN, что влияло на производительность:

Усложнённые запросы: ненужные операции JOIN увеличивали нагрузку на базу данных.
Избыточное использование памяти: данные загружались в память даже при их ненужности.
Замедление работы API: запросы, возвращающие списки магазинов, замедлялись из-за лишних данных.

Решение
1. Перепроектирование связи
Связь была преобразована из OneToOne в ManyToOne. Теперь StoreDetail ссылался на Store, что позволило Doctrine корректно применять ленивую загрузку.

2. Обновление схемы базы данных
С помощью Doctrine Migrations была изменена структура базы данных: старый внешний ключ для связи OneToOne был удалён, и добавлен ключ для ManyToOne.

3. Корректировка запросов
Теперь детали магазина загружаются только по необходимости

4. Профилирование
С помощью инструментов Symfony была подтверждена оптимизация. Теперь связанные сущности не загружаются без явного запроса.

Результаты
🟢Скорость выполнения запросов: уменьшилась в среднем на 35%.
🟢Использование памяти: значительно сократилось, так как избыточные данные больше не загружаются.
🟢Время ответа API: улучшилось на 20–30% для запросов с большими объёмами данных.

👉Ссылка на Medium

Библиотека пхпшника | PHP, Laravel, Symfony, CodeIgniter

20 Dec, 18:00


🍎 Подборка лучших статей «Библиотеки программиста» за ноябрь: сохраняй в заметки, чтобы не пропустить #самыйсок

✌️🆚⚛️ Vite vs Create React App: почему разработчики массово переходят на новый инструмент
⚛️ 8 важнейших аспектов JavaScript, которые нужно освоить до изучения React
🔀 Команды git merge и git rebase: преимущества, недостатки и ключевые различия
👾🔍 Укрощение монстров: мониторинг и управление ресурсоемкими запросами в Django + PostgreSQL
🚀 Как ускорить распределенные системы: 8 стратегий снижения времени ожидания
🧪 Успешное тестирование: основы и передовые приемы Jest. Часть 1
👨‍💻🚀 Тест: насколько ты продвинутый разраб?

Библиотека пхпшника | PHP, Laravel, Symfony, CodeIgniter

20 Dec, 11:01


👑🧟 Король спама: насколько сильно ты бесишь коллег в рабочих чатах

Признайся, ты тоже иногда отправляешь голосовые сообщения из маршрутки? Или может быть, ты тот самый человек, который пишет «Привет» и исчезает на час? Всего 10 вопросов, которые помогут понять, являешься ли ты мастером цифрового этикета или главным спамером офиса. Готов узнать правду?

👉 Пройти тест

Библиотека пхпшника | PHP, Laravel, Symfony, CodeIgniter

20 Dec, 07:02


🙇‍♂️ Отобрать одного разраба на стек PHP + Vanilla JS после нескольких десятков созвонов-собеседований — вот они, современные реалии.

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

— рассказывает Виталий Квитковский, руководитель отдела разработки и DevOps.

Под катом вас ждет:

☑️ Кратко о структуре собеседования.
☑️ Разбор задач.
☑️ Чего обычно не хватает джунам и как это добрать?
☑️ Что такое базовое программирование?
☑️ Как этому научиться?

👉 Читать

Библиотека пхпшника | PHP, Laravel, Symfony, CodeIgniter

19 Dec, 18:00


💬 Пишите ли вы тесты на свой код?

❤️ — всегда пишу тесты, которые покрывают важные места
👍 — иногда пишу, зависит от проекта
🥱 — еще не разбирался с тестами

Библиотека пхпшника | PHP, Laravel, Symfony, CodeIgniter

06 Dec, 17:59


#дайджест #PHPdevjob

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

▪️ Junior PHP (Symfony) разработчик
Удалёнка, ТМК
Подробнее

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

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

▪️ PHP-разработчик
Удалёнка / Гибрид (Екатеринбург), TradeDealer
Подробнее

▪️ PHP-разработчик (middle backend php developer)
Офис (Новосибирск), М+1
Подробнее

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

▪️ PHP разработчик
Удалёнка, Петрович-Тех
Подробнее

▪️ PHP/Go developer (Quality Сontrol)
Удалёнка, Lamoda Tech
Подробнее

Понравились вакансии?
❤️ — да
🤔 — нет

Библиотека пхпшника | PHP, Laravel, Symfony, CodeIgniter

06 Dec, 07:03


Оптимистические 🆚 Пессимистические блокировки: наглядная #инфографика для разработчика

👉 Источник

Библиотека пхпшника | PHP, Laravel, Symfony, CodeIgniter

05 Dec, 18:00


💬 Сколько часов в день вы тратите на рабочие созвоны?

❤️ — меньше часа
👍 — от часа до двух
👾 — от двух до трёх часов
🌚 — почти весь рабочий день состоит из созвонов

#интерактив

Библиотека пхпшника | PHP, Laravel, Symfony, CodeIgniter

05 Dec, 15:00


Создание микросервиса

Присоединяйтесь к нашему открытому уроку и погрузитесь в основы разработки микросервисов

🚀На вебинаре вы узнаете:

1. Основные принципы проектирования микросервисов: разделение на небольшие независимые компоненты, которые взаимодействуют через API.

2. Способы интеграции микросервисов с помощью REST API, gRPC или очередей сообщений (RabbitMQ, Apache Kafka).

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

Практика: Расскажем, как проектировать микросервисную архитектуру, выбирать технологии и инструменты для её реализации.

👉 Регистрация и подробности о курсе «Архитектура и шаблоны проектирования»

Реклама. ООО «Отус онлайн-образование», ОГРН 1177746618576

Библиотека пхпшника | PHP, Laravel, Symfony, CodeIgniter

05 Dec, 11:01


При обновлении моделей Laravel всегда срабатывают «Model Events», которые представляют собой хуки, позволяющие выполнять дополнительные действия. Вы можете отключить это поведение, обновляя их «без шума» 🤫.

Библиотека пхпшника | PHP, Laravel, Symfony, CodeIgniter

05 Dec, 07:05


🥳Официальный мануал по PHP научился новому трюку: теперь вы можете запускать код прямо в браузере!

Библиотека пхпшника | PHP, Laravel, Symfony, CodeIgniter

04 Dec, 18:00


Какова цель функции «spl_autoload_register» в PHP?

Функция spl_autoload_register в PHP используется для автоматической загрузки классов гибким и эффективным способом. Она часто используется в объектно-ориентированных приложениях PHP, где классы организованы в соответствии со стандартом PSR-4 или аналогичными соглашениями.

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

Как это работает:

1️⃣Вы определяете одну или несколько функций автозагрузки, которые сопоставляют имена классов с путями к файлам.
2️⃣Регистрируете эти функции автозагрузки с помощью spl_autoload_register.
3️⃣Когда класс создается или ссылается, и его определение еще не загружено, PHP вызывает зарегистрированные функции автозагрузки через spl_autoload_register, чтобы попытаться загрузить определение класса.
4️⃣Этот процесс позволяет более организованной и эффективной загрузке классов в приложениях PHP, уменьшая необходимость вручную включать файлы классов.

Библиотека пхпшника | PHP, Laravel, Symfony, CodeIgniter

04 Dec, 11:00


#memes

Библиотека пхпшника | PHP, Laravel, Symfony, CodeIgniter

04 Dec, 07:03


PHP-GLFW

Полнофункциональное расширение OpenGL и GLFW для PHP.

Оно позволяет создавать 2D и 3D приложения в реальном времени на PHP. Также предоставляет разработчикам совершенно новый набор инструментов для создания графических приложений, таких как игры, научные симуляции, пользовательские интерфейсы и многое другое.

Библиотека пхпшника | PHP, Laravel, Symfony, CodeIgniter

04 Dec, 06:01


⚙️ Подпишись на нашу еженедельную email-рассылку, чтобы быть в курсе последних открытий и тенденций в мире бэкенда.

В еженедельных письмах ты найдешь:
● Языки программирования и фреймворки для бэкенда
● Архитектура и проектирование серверных приложений
● Базы данных и управление данными
● Безопасность и защита данных
● Облачные технологии и DevOps
● API и интеграции
● Тестирование и отладка
● Инструменты и утилиты для бэкенд-разработчиков
● Лучшие практики и паттерны проектирования

👉Подписаться👈

Библиотека пхпшника | PHP, Laravel, Symfony, CodeIgniter

03 Dec, 18:00


#хочу_спросить

Задавайте любые вопросы о программировании и получайте ответы от пользователей. В комментариях под постом укажите #язык, #стек и/или #библиотеку, по которым задаете вопрос.

Библиотека пхпшника | PHP, Laravel, Symfony, CodeIgniter

03 Dec, 07:03


Улучшения в PHPStan для анализа типов

Здесь показаны достижения в области улучшения анализа типов в PHPStan, выполненные за последние годы.

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

Узкие типы на основе условий
PHPStan давно использует метод «вычитания» типов. Вместо того чтобы описывать, чем является переменная, анализ строится на исключении того, чем она не является. Например:

Если переменная проверяется на истинность (if ($mixed)), исключаются ложные значения.
Если переменная ложна (if (!$mixed)), исключаются истинные значения.
Этот подход расширен на такие операции, как приведение типов в условиях.

Примеры улучшений
🔸Приведение типов: Приведение переменной к числу, строке или булевому типу теперь лучше учитывается при анализе. Например, int, bool или string помогают уточнять тип переменной в конкретных контекстах.

🔸Сравнение строк: Улучшена работа с функциями вроде strlen() и substr(). Сравнение длины строки или её части теперь помогает определять, является ли строка пустой, ложной или непустой.

🔸isset() и массивы: Анализ использования isset() теперь точнее определяет тип ключа массива. Например, isset($array[$mixed]) исключает невозможные значения для $mixed.

🔸IIFE (immediate-invoked-function-expression): Этот подход, популярный в JavaScript, иногда используется и в PHP. PHPStan научился корректно анализировать изменения типов внутри таких функций.

Новые phpdoc-типы
Для улучшения анализа в PHPStan добавлены новые аннотации:

non-falsy-string: строка, которая не является ложным значением.
@param-out: уточняет, как изменяется переданный по ссылке параметр.
value-of и другие.
Эти аннотации помогают разработчикам и инструментам анализировать код быстрее и точнее.

Расширения PHPStan
В PHPStan появилась возможность учитывать контекст вызовов. Например, расширения для анализа preg_match() теперь используют дерево синтаксиса регулярных выражений. Также разработан инструмент phpstan-dba для анализа запросов к базе данных с учётом схемы данных.

Библиотека пхпшника | PHP, Laravel, Symfony, CodeIgniter

02 Dec, 20:03


🧑‍💻 Статьи для IT: как объяснять и распространять значимые идеи

Напоминаем, что у нас есть бесплатный курс для всех, кто хочет научиться интересно писать — о программировании и в целом.

Что: семь модулей, посвященных написанию, редактированию, иллюстрированию и распространению публикаций.

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

👉Материалы регулярно дополняются, обновляются и корректируются. А еще мы отвечаем на все учебные вопросы в комментариях курса.

Библиотека пхпшника | PHP, Laravel, Symfony, CodeIgniter

02 Dec, 18:00


Из легаси в конфетку: история трансформации

Разработчики рано или поздно сталкиваются с легаси-кодом — старым, не всегда понятным и порой пугающим набором строк, в которых легко потеряться. Такой код вызывает смешанные чувства: с одной стороны, он отражает результат чьей-то работы и является частью истории компании, с другой — представляет собой постоянный вызов, требующий не только поддержки, но и регулярных улучшений. Превратить его в «конфетку» — задача сложная, но выполнимая.

Один из примеров легаси-кода — проект, переданный в компанию при переходе с аутсорсинга на внутреннюю разработку. Подобные ситуации часто сопровождаются трудностями: код может быть плохо документирован, включать временные решения и не соответствовать корпоративным стандартам. Нередко такие проекты представляют собой результат работы нескольких команд, каждая из которых вносила свои изменения, не задумываясь о долгосрочной поддержке. В итоге получается классический пример легаси — код, который требует глубокого анализа и серьёзной переработки, чтобы превратиться в поддерживаемую и надёжную систему.

Данная статья описывает опыт команды, которая за год работы обновила и модернизировала подобный проект.

Библиотека пхпшника | PHP, Laravel, Symfony, CodeIgniter

02 Dec, 11:00


📝⚖️ Увольнение по статье: что делать, особенности и нюансы

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

👉 Читать подробнее

Библиотека пхпшника | PHP, Laravel, Symfony, CodeIgniter

02 Dec, 07:04


Нужно динамически настраивать почтовые программы? Метод Mail::build в Laravel позволяет создавать почтовые программы на лету!

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

Библиотека пхпшника | PHP, Laravel, Symfony, CodeIgniter

01 Dec, 18:00


Что такое анонимная функция в PHP и как её использовать?

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

#вопросы_с_собеседований

Библиотека пхпшника | PHP, Laravel, Symfony, CodeIgniter

01 Dec, 11:00


#memes

Библиотека пхпшника | PHP, Laravel, Symfony, CodeIgniter

01 Dec, 07:04


Saloon

Saloon — это библиотека PHP, которая предоставляет вам инструменты для создания простых интеграций API и SDK. Saloon перемещает ваши запросы API в повторно используемые классы, чтобы вы могли хранить все свои конфигурации API в одном месте. Его можно легко настроить с помощью плагинов, но он поставляется предварительно настроенным для вас, поэтому вы можете сразу же приступить к отправке запросов API. Saloon поставляется со множеством интересных функций, таких как запись запросов в ваших тестах, кеширование, OAuth2 и нумерация страниц.

Библиотека пхпшника | PHP, Laravel, Symfony, CodeIgniter

30 Nov, 18:00


💬array_map() предоставляет только значение массива, но не ключ. Чтобы получить доступ к ключу, используйте дополнительные аргументы и array_keys().

Обратите внимание, что порядок аргументов теперь value, key, а не как обычно $key => $value.

Библиотека пхпшника | PHP, Laravel, Symfony, CodeIgniter

30 Nov, 07:03


Доступ к базам данных в PhpStorm

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

🔗 Подключение к базе данных
Для подключения к базе данных нужно воспользоваться встроенными инструментами PhpStorm. Например, для SQLite:

🔸Создайте Laravel-приложение и выберите базу данных.
🔸Откройте окно инструментов баз данных.
🔸Укажите путь к файлу SQLite.

После этого база данных будет подключена, и её содержимое станет доступным для работы.

👁️ Просмотр данных
Данные таблиц можно просматривать, дважды кликнув по нужной таблице. Это позволяет сразу увидеть содержимое, как это сделано в примере с таблицей пользователей.

🔄 Удобство трансформации данных
Одной из полезных функций является возможность транспонирования таблиц:
Строки и столбцы можно поменять местами.
Это упрощает анализ данных для конкретной записи.

🖊️ Консоль запросов
Встроенная консоль для запросов предоставляет:

Автозаполнение.
🎨 Подсветку синтаксиса.
🤖 Поддержку AI-инструментов, таких как Copilot.
Консоль сохраняет выполненные запросы между сессиями, что удобно для повторного использования. Также можно задавать параметры, которые легко менять перед запуском запросов.

📤 Экспорт данных
PhpStorm позволяет экспортировать данные таблиц в форматах:

🔸CSV,
🔸JSON,
🔸Markdown и других.

Например, выбрав Markdown, можно скопировать таблицу и вставить её в документацию в готовом виде. Также можно настроить собственные экстракторы данных.

📊 Автогенерация диаграмм
PhpStorm поддерживает автоматическое создание диаграмм базы данных. Они помогают визуализировать структуру базы и связи между таблицами.

Библиотека пхпшника | PHP, Laravel, Symfony, CodeIgniter

29 Nov, 19:05


#дайджест новостей по PHP за неделю:

🔎Выпущен CakePHP 5.1.2 — Улучшения: В списке команд консоли команды app и cakephp теперь отображаются над названиями плагинов. Добавлены описания команд для всех команд фреймворка. Исправлена утечка дескрипторов файлов в StubConsoleOutput и многое другое.

🔎Динамические конструкторы кэша, базы данных и почты в Laravel 11.31 — Команда Laravel выпустила версию 11.31, в которой появились конструкторы динамического кэша/базы данных/почты, хранилище токенов кэша, удобный метод URL::forceHttps() и многое другое.

🔎Laravel Forge добавляет интеграцию с Statamic

🔎Выпущен Symfony 7.2.0-RC1 — Только что состоялся релиз Symfony 7.2.0-RC1. Вот список наиболее важных изменений по сравнению с 7.2.0-BETA2.

🔎Неделя Symfony #934 (18-24 ноября 2024 года)

Библиотека пхпшника | PHP, Laravel, Symfony, CodeIgniter

29 Nov, 11:00


🎓💻🔍 Как не попасть на инфоцыган: 8 критериев выбора онлайн-школы

Не знаете, как выбрать онлайн-школу с качественной учебной программой? Мы собрали 8 основных критериев, которые помогут вам найти идеальное место для обучения.

👉 Читать статью

Библиотека пхпшника | PHP, Laravel, Symfony, CodeIgniter

29 Nov, 07:02


💡 200 идей для проектов

На Dev.to собрали подборку из 200 идей для проектов с примерами на любой уровень: от базовых до продвинутых. Это вдохновение для тех, кто ищет: как заполнить свой GitHub, заполнить портфолио или просто прокачаться.

Что внутри:
▪️ Начальные проекты. Здесь можно найти простые задачи, вроде создания калькулятора или генератора случайных чисел.
▪️ Средний уровень. Проекты вроде чат-приложения, систем для отслеживания задач.
▪️ Продвинутые проекты. Решения с использованием сложных алгоритмов, разработка на основе ИИ, системы управления пользователями и многое другое.

Библиотека пхпшника | PHP, Laravel, Symfony, CodeIgniter

28 Nov, 18:00


🚀 Там биткойн летит вверх, и в связи с этим вопрос:

💬 Вкладываетесь в криптовалюты?

❤️ — да, в биткойн
👍 — да, в другую крипту
👾 — нет

#интерактив

Библиотека пхпшника | PHP, Laravel, Symfony, CodeIgniter

28 Nov, 11:00


Рекордсмены в Fusc последовательности

Анализ подходов к решению олимпиадной задачи по программированию, связанной с диатомической числовой последовательностью Штерна.

Библиотека пхпшника | PHP, Laravel, Symfony, CodeIgniter

28 Nov, 07:00


Alice, Nelmio, Hautelook, Faker — Как обновить Doctrine Fixtures

Работа с обновлением Doctrine Fixtures связана с синхронизацией сразу нескольких пакетов на GitHub, что делает задачу сложной и трудоемкой. Автор делитсяhttps://tomasvotruba.com/blog/alice-nelmio-hautelook-faker-and-how-to-upgrade-doctrine-fixtures-part-1 опытом этого процесса и описывает шаги, которые помогут выполнить обновление максимально эффективно.

План обновления
Среди основных изменений:

🔸hautelook/alice-bundle: обновление с версии 1.* до 2.*
🔸nelmio/alice: переход с версии 2.* на 3.*
🔸fzaninotto/faker заменяется на fakerphp/faker
🔸doctrine/data-fixtures: обновление с версии 1.5 до 1.7
🔸doctrine/mongodb-odm-bundle: обновление с версии 3.* до 5.*

Библиотека пхпшника | PHP, Laravel, Symfony, CodeIgniter

27 Nov, 18:03


🎉 Розыгрыш от Proglib Academy и DigitalRazor!

С 27 ноября по 27 декабря у вас есть шанс не только прокачать свои навыки, но и выиграть ПК при покупке любого курса Академии!

🎁 Призы для участников акции:

– Игровой ПК DigitalRazor ProGaming
– VIP-пакет курса Proglib Academy

💡 Как принять участие?
Купите любой курс Proglib Academy с 27 ноября по 27 декабря и получите шанс выиграть мощный ПК.

Приобретите технику DigitalRazor — участвуйте в розыгрыше VIP курса.

📅 Вместе с DigitalRazor мы создали спецпредложение -50% на курсы до 30 ноября, чтобы вы могли начать обучение на более выгодных условиях.

Выбрать курс

Библиотека пхпшника | PHP, Laravel, Symfony, CodeIgniter

27 Nov, 14:19


Чем отличается require от require-dev?

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

require-dev: Этот раздел определяет зависимости, необходимые исключительно для разработки и тестирования вашего приложения. Обычно это инструменты для тестирования (например, PHPUnit), фиктивные данные для тестирования (например, Faker), инструменты для отладки (например, Xdebug) и т. д. Эти зависимости не включаются в окружение продакшена (production environment), чтобы уменьшить размер и сложность установки.

Когда вы устанавливаете пакет с помощью Composer, по умолчанию устанавливаются зависимости из обоих разделов require и require-dev. Однако при использовании опции --no-dev в команде composer install или composer update, Composer устанавливает только зависимости из раздела require, пропуская require-dev. Это особенно полезно при развертывании приложения в продакшен окружении, когда не нужны инструменты и зависимости, предназначенные только для разработки.

Библиотека пхпшника | PHP, Laravel, Symfony, CodeIgniter

27 Nov, 12:13


⚡️ Напоминаем: у нас можно (и нужно) купить рекламу

→ Более 60 телеграм-каналов по всем направлениям IT
→ Почти 1,2 миллиона аудитории
→ Собственное медиа и сайт с DAU 25 000 — можем усилить продвижение
→ Классные email-рассылки
→ И, конечно же, крутые контент-менеджеры, которые сделают нативную интеграцию/придумают виральный пост/реализуют любые контентные предпочтения

Для заказа пишите сюда: @proglib_adv

Библиотека пхпшника | PHP, Laravel, Symfony, CodeIgniter

27 Nov, 11:00


#memes

Библиотека пхпшника | PHP, Laravel, Symfony, CodeIgniter

27 Nov, 07:00


Prism

Это мощный пакет Laravel для интеграции больших языковых моделей (LLM) в ваши приложения. Он предоставляет удобный интерфейс для генерации текста, обработки многоэтапных диалогов и использования инструментов различных поставщиков ИИ-моделей.

Библиотека пхпшника | PHP, Laravel, Symfony, CodeIgniter

26 Nov, 18:00


Какие нововведения из 8.4 планируете активно использовать?👇

Библиотека пхпшника | PHP, Laravel, Symfony, CodeIgniter

26 Nov, 15:01


Отложенные вычисления с помощью паттернов

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

Ждем вас на открытом вебинаре 28 ноября в 20:00 мск.

🚀На вебинаре вы узнаете:

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

2. Практические кейсы.

🎯 Вебинар будет полезен:

• Разработчикам и инженерам, стремящимся улучшить производительность в приложениях.

• Архитекторам ПО, проектирующим масштабируемые и отказоустойчивые системы.

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

В результате вебинара:

• Вы научитесь применять шаблоны Мост, Интерпретатор, Итератор.

Встречаемся в преддверии старта курса «Архитектура и шаблоны проектирования». Все участники получат спец. цену на курс.

Регистрируйтесь прямо сейчас, чтобы не пропустить мероприятие

Реклама. ООО «Отус онлайн-образование», ОГРН 1177746618576, www.otus.ru

Библиотека пхпшника | PHP, Laravel, Symfony, CodeIgniter

26 Nov, 07:00


Как обрабатывать большие массивы данных в Laravel без дефицита памяти

Laravel предоставляет несколько полезных методов, которые помогут вам обрабатывать данные небольшими кусками, что экономит память и ускоряет работу приложения. Здесь показано, как использовать chunk(), chunkById() и Lazy Collections для эффективной обработки больших наборов данных в Laravel.

Библиотека пхпшника | PHP, Laravel, Symfony, CodeIgniter

25 Nov, 18:00


array_column() — это очень удобная встроенная функция PHP, которая извлекает индекс из списка массивов или публичное свойство из списка объектов.

Третий аргумент array_column() — это ключ, который будет использоваться для ссылки на значение в результирующем массиве. Это очень удобно для превращения массива в хэш.

Обратите внимание, что дублирующиеся ключи будут перезаписаны.

Библиотека пхпшника | PHP, Laravel, Symfony, CodeIgniter

25 Nov, 15:15


Что будет, если DigitalRazor объединится с Proglib Academy? Правильно! Новый розыгрыш.

Условия:

Подпишитесь на DigitalRazor;
Подпишитесь на «Библиотеку программиста»;
Нажмите кнопку «Участвовать» под этим постом.

Призы:

1-е место: 27-дюймовый монитор;
2, 3 и 4-е место: сертификат номиналом 20 000 рублей на ИТ-курсы от Proglib Academy;
5-е место: геймерская клавиатура + коврик на выбор.

Призы разыграем 1 декабря в 20:00 (МСК).

Доставка призов возможна только по городам России и Белоруссии.

Proglib Academy создаёт онлайн-курсы для программистов, помогает получить востребованные навыки и построить успешную карьеру в IT.

Игровые компьютеры и рабочие станции DigitalRazor — это качественная сборка, топовое железо и эффектный дизайн.

Регламент розыгрыша

Библиотека пхпшника | PHP, Laravel, Symfony, CodeIgniter

25 Nov, 11:02


Тест: 👨‍💻🚀 Насколько ты продвинутый разраб?

Говорят, что джун становится мидлом, когда начинает понимать, как мало он знает. Этот тест покажет, насколько ты продвинулся в своём развитии.

👉 Пройти

Библиотека пхпшника | PHP, Laravel, Symfony, CodeIgniter

25 Nov, 07:00


Исправление конфигурации OPcache ускорило работу PHP-приложения в 3 раза

Правильное управление OPcache при атомарных деплойментах позволило:

🔸Ускорить приложение в 3 раза.
🔸Снизить нагрузку на CPU в 10 раз.
🔸Сохранить сотни дней на время загрузки для пользователей.

Проблема
При деплойментах с символьными ссылками OPcache продолжает кэшировать файлы предыдущих релизов, заполняя память. Это снижает эффективность кэша.

Решение
Сбрасывать OPcache при каждом деплойменте с помощью cachetool. Это гарантирует, что файлы нового релиза будут кэшироваться заново.

Настройки OPcache
opcache.validate_timestamps=0 — отключить проверку временных меток.
opcache.file_update_protection=0 — мгновенное кэширование новых файлов.
Настроить объем памяти (opcache.memory_consumption) и количество файлов (opcache.max_accelerated_files) для ваших нужд.

Мониторинг
Добавьте ключевые метрики OPcache (свободная память, hit rate) в систему мониторинга. Это поможет выявлять проблемы и оптимизировать работу.

Библиотека пхпшника | PHP, Laravel, Symfony, CodeIgniter

24 Nov, 18:00


Что такое идемпотентность метода? Какие HTTP-методы являются идемпотентными для REST?

Идемпотентность метода означает, что повторное применение метода с теми же параметрами не приведет к изменению состояния системы. Другими словами, результат выполнения метода не зависит от количества его вызовов.

В контексте REST-архитектуры, следующие HTTP-методы являются идемпотентными:

1. GET: Получение информации с сервера. Повторный запрос GET не должен иметь никакого влияния на состояние сервера.
2. HEAD: Аналогично методу GET, но без тела ответа. Повторный запрос HEAD также не должен иметь никакого влияния на состояние сервера.
3. PUT: Обновление (или создание) ресурса на сервере. Если запросы PUT повторяются с теми же параметрами, они должны иметь такое же состояние ресурса после каждого выполнения.
4. DELETE: Удаление ресурса на сервере. Повторное выполнение DELETE с теми же параметрами должно иметь то же состояние.

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

#вопросы_с_собеседований

Библиотека пхпшника | PHP, Laravel, Symfony, CodeIgniter

24 Nov, 11:00


#memes

Библиотека пхпшника | PHP, Laravel, Symfony, CodeIgniter

24 Nov, 07:00


Phiki

Это подсветка синтаксиса, написанная на PHP. Он использует грамматические файлы TextMate и темы Visual Studio Code для генерации кода с подсветкой синтаксиса для веб-страниц и терминалов.

Библиотека пхпшника | PHP, Laravel, Symfony, CodeIgniter

23 Nov, 18:00


Настраивать xdebug для первого запуска не нужно вообще! Как в Phpstorm запустить отладку за минуту и без браузера

Многие считают, что добиться успешного запуска отладки xdebug после его установки — тяжело и мучительно. Но на самом деле, сделать первый запуск можно менее чем за минуту, не делая настройки и даже не прикасаясь к конфигурационным файлам .ini (php.ini/xdebug.ini). Как это сделать? Об этом и пойдет речь в этой статье.

Библиотека пхпшника | PHP, Laravel, Symfony, CodeIgniter

23 Nov, 07:00


Лучшая стратегия кэширования Redis в Laravel: Руководство по быстрому и эффективному кэшированию

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

Здесь рассмотрены основные стратегии кэширования в Laravel с использованием Redis, включая настройку, управление временем жизни данных и очистку кэша.

Зачем кэшировать с Redis?
Кэширование позволяет временно сохранять данные, что сокращает время, затрачиваемое на запросы к базе данных. Это ускоряет загрузку страниц, снижает нагрузку на сервер и улучшает пользовательский опыт.

Преимущества Redis для кэширования:

🔸Высокая скорость работы с данными.
🔸Поддержка различных структур данных (строки, списки, хэши и др.).
🔸Гибкое управление сроком хранения данных и их удалением.

Библиотека пхпшника | PHP, Laravel, Symfony, CodeIgniter

22 Nov, 18:03


Выпущен PHP 8.4!

Обновление доступно на официальном сайте.

Хороших выходных🫣

Библиотека пхпшника | PHP, Laravel, Symfony, CodeIgniter

22 Nov, 13:35


💡 Как избавиться от WebSockets и сэкономить $1 млн в год: неожиданные решения для оптимизации

Как снизить расходы на инфраструктуру и повысить эффективность? Оказывается, отказ от WebSockets может сэкономить миллионы. Вместо привычного подхода можно использовать решения, которые не только проще, но и лучше подходят для определённых задач, как, например, асинхронные очереди или SSE.

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

🔗 Читать статью
🔗 Зеркало

Библиотека пхпшника | PHP, Laravel, Symfony, CodeIgniter

22 Nov, 07:00


Многие, возможно, уже видели «красные флаги» Яндекса⁠⁠. Помимо кучи неприемлемых требований нас больше всего заинтересовало то, что у GO-разработчика PHP опыт не считается релевантным🤔

Ваше мнение можете писать в комментарии👇

Библиотека пхпшника | PHP, Laravel, Symfony, CodeIgniter

22 Nov, 06:00


Вакансии «Библиотеки программиста» — ждем вас в команде!

Мы постоянно растем и развиваемся, поэтому создали отдельную страницу, на которой будут размещены наши актуальные вакансии. Сейчас мы ищем:
👉контент-менеджеров для ведения телеграм-каналов

Подробности тут

Мы предлагаем частичную занятость и полностью удаленный формат работы — можно совмещать с основной и находиться в любом месте🌴

Ждем ваших откликов 👾

Библиотека пхпшника | PHP, Laravel, Symfony, CodeIgniter

21 Nov, 18:02


Как часто, по вашему мнению, следует менять место работы?

Ставьте реакции:

— раз в год
🔥 — раз в 2-3 года
❤️ — раз в 5-6 лет
🌚 — а можно менять работу?

Библиотека пхпшника | PHP, Laravel, Symfony, CodeIgniter

21 Nov, 11:00


is_a() против Instanceof

is_a() и instanceof — это одна и та же функция: проверка принадлежности объекта к определенному классу. Однако выполняются они по-разному.

Использование оператора ::class безопасно в обоих случаях.

Использование имени является именем класса для instanceof, в то время как для is_a() оно является именем константы. Это может привести к путанице.

Библиотека пхпшника | PHP, Laravel, Symfony, CodeIgniter

21 Nov, 07:00


Реализация сценария использования DDD на PHP

Здесь рассматривается подход к реализации сценария использования (Use Case) в рамках Domain-Driven Design (DDD) на PHP. Примером служит класс TaxPersistUseCase, который используется для управления сохранением сущности налога. Подход демонстрирует использование интерфейсов и доменных классов для работы с данными, сохраняя четкое разделение компонентов и следуя принципам DDD.

Библиотека пхпшника | PHP, Laravel, Symfony, CodeIgniter

18 Nov, 20:02


🧑‍💻 Статьи для IT: как объяснять и распространять значимые идеи

Напоминаем, что у нас есть бесплатный курс для всех, кто хочет научиться интересно писать — о программировании и в целом.

Что: семь модулей, посвященных написанию, редактированию, иллюстрированию и распространению публикаций.

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

👉Материалы регулярно дополняются, обновляются и корректируются. А еще мы отвечаем на все учебные вопросы в комментариях курса.

Библиотека пхпшника | PHP, Laravel, Symfony, CodeIgniter

18 Nov, 18:00


Применение статических анализаторов архитектуры на примере гексагональной архитектуры

Отсутствие четкой структурированной архитектуры проектов — не редкость в ИТ. Одни этим пренебрегают из-за маленького масштаба проекта, другие — из-за сжатых сроков разработки, третьи — из-за отсутствия экспертизы в этом вопросе. Вместе с тем, движение по этому пути — практически всегда история с «отложенными последствиями»: со временем такие проекты становится сложно поддерживать, масштабировать, администрировать и фиксить.

Здесь рассказывается, почему важно структурировано выстраивать архитектуру проектов, а также показано на примере, с помощью каких инструментов можно отслеживать соответствие архитектуры изначальным требованиям.

Библиотека пхпшника | PHP, Laravel, Symfony, CodeIgniter

18 Nov, 07:00


Laravel под капотом — немного о макросах

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

Библиотека пхпшника | PHP, Laravel, Symfony, CodeIgniter

17 Nov, 18:01


Что выведет следующий код?

Библиотека пхпшника | PHP, Laravel, Symfony, CodeIgniter

17 Nov, 11:00


#memes

Библиотека пхпшника | PHP, Laravel, Symfony, CodeIgniter

17 Nov, 07:00


side-effects-detector

Эта библиотека анализирует php-код на предмет побочных эффектов.

Побочные эффекты классифицируются по категориям, чтобы их было легче отфильтровать в зависимости от вашего сценария использования.

Библиотека пхпшника | PHP, Laravel, Symfony, CodeIgniter

16 Nov, 18:00


💬Итак, когда есть анонимный класс, который дал анонимный объект, можно ли деанонимизировать его и использовать в другом месте кода?

Благодаря class_alias() и $object::class это возможно!

Библиотека пхпшника | PHP, Laravel, Symfony, CodeIgniter

16 Nov, 07:00


Построение устойчивой и масштабируемой архитектуры

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

Что такое масштабируемость и устойчивость

Масштабируемость позволяет системе выдерживать высокие нагрузки и распределять их без сбоев. Устойчивость означает способность системы к самовосстановлению при сбоях, без потери данных и с минимальным вмешательством разработчиков. Эти качества можно достичь за счёт изоляции процессов: обрабатывая каждую задачу отдельно, можно быстро масштабировать обработку и выполнять только те операции, которые действительно необходимы.

Сообщения как основа архитектуры

Архитектуры, основанные на передаче сообщений, помогают строить системы, устойчивые к сбоям и готовые к масштабированию. Однако такие архитектуры добавляют сложности в разработку, так как требуют значительной настройки и большого объёма шаблонного кода. Без упрощений это может снижать скорость работы над основными задачами и даже вызывать у разработчиков неудовлетворённость.

Ориентация на бизнес-логику

Чтобы облегчить задачу разработчикам и сделать архитектуру полезной в повседневной работе, представлена концепция «Бизнес-ориентированной архитектуры». Её задача — позволить разработчикам сосредоточиться на бизнес-логике, а не на настройке инфраструктуры. Достичь этого помогают три опорных столпа:

1. Устойчивость сообщений — сообщения передаются по каналам, обеспечивая асинхронное выполнение и соблюдение шаблонов, таких как автоматические повторы и обработка ошибок. Это снижает вероятность неправильной настройки системы.

2. Декларативная конфигурация — вместо сложной ручной настройки применяется подход с атрибутами, где каждый метод помечается как обработчик команды. Это упрощает разработку, позволяет избежать ошибок конфигурации и позволяет новым разработчикам работать с системой без глубокого понимания её устройства.

3. Блоки построения — использование готовых решений, таких как агрегаты и проекции, помогает избежать повторяющегося кода, который загружает процесс разработки. Агрегаты позволяют сосредоточиться на бизнес-логике, упрощая процесс обновления и хранения данных, а проекции помогают быстро создавать представления данных.

👉Читать статью с примерами кода(Если не открывается попробуйте включить VPN)

Библиотека пхпшника | PHP, Laravel, Symfony, CodeIgniter

16 Nov, 06:02


Самые полезные каналы для программистов в одной подборке!

Сохраняйте себе, чтобы не потерять 💾

🔥Для всех

Библиотека программиста — новости, статьи, досуг, фундаментальные темы
Книги для программистов
IT-мемы
Proglib Academy — тут мы рассказываем про обучение и курсы
Азбука айтишника — здесь мы познаем азы из мира программирования

🤖Про нейросети
Библиотека робототехники и беспилотников | Роботы, ИИ, интернет вещей
Библиотека нейрозвука | Транскрибация, синтез речи, ИИ-музыка
Библиотека нейротекста | ChatGPT, Gemini, Bing
Библиотека нейровидео | Sora AI, Runway ML, дипфейки
Библиотека нейрокартинок | Midjourney, DALL-E, Stable Diffusion

#️⃣C#

Книги для шарпистов | C#, .NET, F#
Библиотека шарписта — полезные статьи, новости и обучающие материалы по C#
Библиотека задач по C# — код, квизы и тесты
Библиотека собеса по C# — тренируемся отвечать на каверзные вопросы во время интервью и технического собеседования
Вакансии по C#, .NET, Unity Вакансии по PHP, Symfony, Laravel

☁️DevOps

Библиотека devops’а — полезные статьи, новости и обучающие материалы по DevOps
Вакансии по DevOps & SRE
Библиотека задач по DevOps — код, квизы и тесты
Библиотека собеса по DevOps — тренируемся отвечать на каверзные вопросы во время интервью и технического собеседования

🐘PHP

Библиотека пхпшника — полезные статьи, новости и обучающие материалы по PHP
Вакансии по PHP, Symfony, Laravel
Библиотека PHP для собеса — тренируемся отвечать на каверзные вопросы во время интервью и технического собеседования
Библиотека задач по PHP — код, квизы и тесты

🐍Python

Библиотека питониста — полезные статьи, новости и обучающие материалы по Python
Вакансии по питону, Django, Flask
Библиотека Python для собеса — тренируемся отвечать на каверзные вопросы во время интервью и технического собеседования
Библиотека задач по Python — код, квизы и тесты

Java

Книги для джавистов | Java
Библиотека джависта — полезные статьи по Java, новости и обучающие материалы
Библиотека Java для собеса — тренируемся отвечать на каверзные вопросы во время интервью и технического собеседования
Библиотека задач по Java — код, квизы и тесты
Вакансии для java-разработчиков

👾Data Science

Книги для дата сайентистов | Data Science
Библиотека Data Science — полезные статьи, новости и обучающие материалы по Data Science
Библиотека Data Science для собеса — тренируемся отвечать на каверзные вопросы во время интервью и технического собеседования
Библиотека задач по Data Science — код, квизы и тесты
Вакансии по Data Science, анализу данных, аналитике, искусственному интеллекту

🦫Go

Книги для Go разработчиков
Библиотека Go разработчика — полезные статьи, новости и обучающие материалы по Go
Библиотека Go для собеса — тренируемся отвечать на каверзные вопросы во время интервью и технического собеседования
Библиотека задач по Go — код, квизы и тесты
Вакансии по Go

🧠C++

Книги для C/C++ разработчиков
Библиотека C/C++ разработчика — полезные статьи, новости и обучающие материалы по C++
Библиотека C++ для собеса — тренируемся отвечать на каверзные вопросы во время интервью и технического собеседования
Библиотека задач по C++ — код, квизы и тесты
Вакансии по C++

💻Другие каналы

Библиотека фронтендера
Библиотека мобильного разработчика
Библиотека хакера
Библиотека тестировщика
Библиотека разработчика игр | Gamedev, Unity, Unreal Engine
Вакансии по фронтенду, джаваскрипт, React, Angular, Vue
Вакансии для мобильных разработчиков
Вакансии по QA тестированию
InfoSec Jobs — вакансии по информационной безопасности

📁Чтобы добавить папку с нашими каналами, нажмите 👉сюда👈

Также у нас есть боты:
Бот с IT-вакансиями
Бот с мероприятиями в сфере IT

Мы в других соцсетях:
🔸VK
🔸YouTube
🔸Дзен
🔸Facebook *
🔸Instagram *

* Организация Meta запрещена на территории РФ

Библиотека пхпшника | PHP, Laravel, Symfony, CodeIgniter

15 Nov, 07:04


⚒️ Фундаментальные основы Redis: на заметку разработчику

👉 Источник

Библиотека пхпшника | PHP, Laravel, Symfony, CodeIgniter

14 Nov, 18:01


Привет, друзья! 👋

Мы готовим статью о том, как эффективно изучать программирование, и хотим услышать ваше мнение! 🤓💻 Поделитесь своим опытом, и самые полезные советы войдут в нашу публикацию.

Библиотека пхпшника | PHP, Laravel, Symfony, CodeIgniter

14 Nov, 11:00


Статистика Laravel в 2024

Сегодня Laravel используют более 1,7 млн сайтов, из которых более 743 тысяч — действующие. Это делает его ведущим фреймворком в PHP-среде. Около 44 тысяч компаний применяют его для своих проектов, включая известные бренды, такие как Pfizer и BBC. Фреймворк популярен в основном в США, где Laravel применяют свыше 300 тысяч сайтов.

Статистика популярности Laravel
Laravel занимает 35,87% рынка PHP-фреймворков, опережая Yii и CodeIgniter.
Годовой доход компании достигает $5,7 млн благодаря платным продуктам, таким как Laravel Forge и Laracasts.

Laravel и индустрии
Основные отрасли, где используется Laravel, — это компьютерные и электронные технологии, наука, образование, а также веб-разработка. Фреймворк популярен в США, Великобритании и России, и, по данным BuiltWith, 5,32% всех сайтов, использующих Laravel, относятся к технологическому сектору.

👉Полная стата по ссылке

Библиотека пхпшника | PHP, Laravel, Symfony, CodeIgniter

14 Nov, 07:00


Все атрибуты Laravel PHP

Атрибуты позволяют добавлять метаданные к классам, методам и свойствам, что упрощает и структурирует разработку. Laravel предоставляет набор встроенных атрибутов, которые можно применять для различных задач.

ObservedBy
Атрибут ObservedBy назначает наблюдателя для модели, что помогает вынести логику наблюдателей в отдельный класс, делая модель проще и чище. Например, можно связать модель User с наблюдателем UserObserver.

ScopedBy
С помощью атрибута ScopedBy можно задать глобальную область видимости для модели. Это полезно для применения стандартных ограничений запроса ко всем операциям с моделью. Например, можно добавить фильтр на активных пользователей, используя глобальный скоуп ActiveScope.

Контекстные атрибуты
Laravel поддерживает удобный способ внедрения зависимости в определённом контексте, используя специальные атрибуты. Вместо настройки привязок в провайдерах, можно внедрить атрибуты для конкретных контекстов, например, внедрить Auth, Cache, Config, DB, Log и Tag в контроллер. Также Laravel позволяет внедрить текущего пользователя в маршрут с помощью атрибута CurrentUser.

DeleteWhenMissingModels
Этот атрибут автоматически удаляет задание из очереди, если нужная модель отсутствует в базе данных. Например, задание ProcessPodcastJob удалится, если модель Podcast не найдена.

WithoutRelations
WithoutRelations позволяет загрузить модель без её связей, что бывает полезно для экономии ресурсов, если связи не требуются.

Custom Eloquent Collections
При работе с запросами к модели, Eloquent возвращает коллекцию через базовый класс Collection. Если нужно использовать собственный класс коллекций с дополнительными методами, это можно сделать с помощью атрибута CollectedBy.

Библиотека пхпшника | PHP, Laravel, Symfony, CodeIgniter

13 Nov, 18:00


Что может содержать интерфейс?

В PHP интерфейс является объявлением, которое определяет список методов, которые должны быть реализованы классами, которые реализуют этот интерфейс. Интерфейс не содержит реализации методов, он просто указывает, какие методы должны быть доступны в классе.

Интерфейс может содержать следующие элементы:

Объявления методов: Это основной компонент интерфейса. Методы в интерфейсе объявляются без тела функции, то есть без реализации.

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

Наследование интерфейсов: Интерфейсы могут наследовать другие интерфейсы, что позволяет создавать иерархии интерфейсов.

Интерфейсы могут быть пустыми: Интерфейс может быть пустым, то есть не содержать ни одного метода. Это полезно в случае, если вы хотите убедиться, что класс реализует определенный интерфейс, но не требует реализации каких-либо конкретных методов.

Интерфейсы в PHP предоставляют гибкую и мощную возможность для определения контрактов между различными частями кода и обеспечивают возможность полиморфного поведения, что способствует упрощению и улучшению структуры вашего приложения.

#вопросы_с_собеседований

Библиотека пхпшника | PHP, Laravel, Symfony, CodeIgniter

13 Nov, 11:00


#memes

Библиотека пхпшника | PHP, Laravel, Symfony, CodeIgniter

13 Nov, 07:00


Dead code detector

Библиотека для обнаружения неиспользуемого кода с помощью расширения PHPStan. Обнаруживает мертвые циклы, поддерживает такие библиотеки, как Symfony, Doctrine, PHPUnit и др. Может автоматически удалять неиспользуемый PHP-код.

Библиотека пхпшника | PHP, Laravel, Symfony, CodeIgniter

12 Nov, 18:01


#хочу_спросить

Задавайте любые вопросы о программировании и получайте ответы от пользователей. В комментариях под постом укажите #язык, #стек и/или #библиотеку, по которым задаете вопрос.

Библиотека пхпшника | PHP, Laravel, Symfony, CodeIgniter

12 Nov, 07:00


Новое в Symfony 7.2

🔸Улучшена работа с тайм-аутами в компоненте Messenger для предотвращения повторной обработки сообщений. Это реализовано двумя новыми функциями:

Поддержка keepalive: введен интерфейс KeepaliveReceiverInterface, который позволяет транспортам оповещать о том, что сообщение все еще обрабатывается, избегая его возврата в очередь. Метод keepalive(Envelope $envelope): void отправляет уведомление о том, что сообщение активно, предотвращая тайм-аут на стороне транспорта. Несколько встроенных транспортов уже реализуют этот интерфейс, и поддержка будет расширена в будущих версиях Symfony.

ConsoleAlarmEvent и SIGALRM-сигнал: добавлен метод setAlarmInterval в основной класс приложений Symfony для установки интервала сигнала SIGALRM. Команды messenger:consume и messenger:failed:retry теперь поддерживают опцию --keepalive, которая позволяет периодически вызывать keepalive с помощью SIGALRM сигнала.

🔸Компонент Mime получил два важных нововведения:

Пользовательские MIME-энкодеры: раньше Mime-компонент поддерживал только фиксированные типы энкодеров для элементов TextPart (quoted-printable, base64, 8bit). Теперь разработчики могут создавать и использовать собственные энкодеры для специфических нужд, таких как SOAP-вложения.

Поддержка Unicode в email-адресах: благодаря поддержке стандарта RFC 6531 теперь можно использовать Unicode-символы в email-адресах (в локальной и доменной частях).

🔸Добавлена возможность настраивать индикатор завершения в компоненте Console, что улучшает удобство работы и взаимодействие с разработчиком (DX). Ранее при использовании индикатора прогресса отображался вращающийся текстовый спиннер, который оставался на последнем состоянии при завершении команды, что могло создавать неконсистентное впечатление.

Теперь по умолчанию отображается значок ✔️ как индикатор завершения, обеспечивая единообразное завершение. Также можно задать собственное значение индикатора завершения с помощью опции finishedIndicatorValue.

Библиотека пхпшника | PHP, Laravel, Symfony, CodeIgniter

10 Nov, 07:00


Эта библиотека представляет гибкий, но строгий способ работы с примитивными типами данных, такими как целые числа, плавающие и строки, в PHP. Она делает акцент на безопасности типов и точности, поддерживая операции для подписанных и беззнаковых целых чисел (Int8, UInt8 и т.д.) и различных форматов с плавающей точкой (Float32, Float64 и т.д.).

Для чего это нужно:

🟢Безопасность типов: Явно определяя типы данных, например UInt8, вы устраняете риск проникновения недопустимых значений в ваше приложение. Например, использование целых чисел без знака гарантирует, что значение останется в допустимых диапазонах, обеспечивая защиту от неожиданного ввода данных.

🟢Точность: Работа с точными значениями, особенно с числами с плавающей точкой, может быть сложной в PHP из-за того, как он управляет плавающими числами нативно.

🟢Защита диапазонов: Указывая точные диапазоны, вы можете предотвратить такие проблемы, как переполнение или недополнение, которые часто остаются незамеченными в языках с динамической типизацией.

🟢Удобство чтения и обслуживания: Явные типы данных улучшают читаемость кода. Когда разработчик читает ваш код, он сразу же понимает, какой тип значения ожидается и какие ограничения на него накладываются. Это повышает удобство сопровождения в долгосрочной перспективе.

Библиотека пхпшника | PHP, Laravel, Symfony, CodeIgniter

09 Nov, 18:00


💬В Laravel есть хелпер Number для простого и удобного форматирования цифровых значений.

Библиотека пхпшника | PHP, Laravel, Symfony, CodeIgniter

09 Nov, 07:03


PHP 8.4 Property Hooks: Можно ли теперь избавиться от геттеров/сеттеров?

В будущей версии PHP 8.4 появится новая функция — «хуки для свойств», позволяющая добавлять логику при обращении к свойствам класса для чтения или записи данных. Это значит, что теперь можно отказаться от использования приватных свойств и публичных методов для их обработки (геттеров и сеттеров).

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

Основные результаты и выводы:

✔️Производительность геттеров и сеттеров: Исследование показало, что вызовы геттеров и сеттеров занимают незначительную часть времени выполнения, даже при работе с большим объемом данных, и практически не влияют на общую производительность приложения.

✔️Сравнение производительности: В тестах с хуками и геттерами/сеттерами разница в скорости оказалась минимальной — около 9%. Это подтверждает, что производительность не должна быть решающим фактором при выборе между хуками и геттерами/сеттерами.

✔️Основные причины использования геттеров/сеттеров: Обычно геттеры и сеттеры применяют не для повышения скорости, а для ограничения доступа к данным и контроля за структурой класса. С хуками такие ограничения также можно реализовать, добавляя нужную логику при доступе к свойству.

✔️Итоги тестирования альфа-версии: Во время ранних тестов PHP 8.4 производительность хуков была ниже, чем у геттеров. Это указывало на необходимость оптимизации, и в итоге в RFC были внесены улучшения, благодаря которым сейчас хуки в PHP 8.4 работают быстрее.

Библиотека пхпшника | PHP, Laravel, Symfony, CodeIgniter

08 Nov, 18:00


🍐 Подборка лучших статей «Библиотеки программиста» за октябрь: сохраняй в заметки, чтобы не пропустить #самыйсок

💻🔍💼 Кризис IT-рынка: как джуны и кадровый голод меняют правила игры
🐍🍽️ Питон съел GIL на завтрак: что нового в версии 3.13
🪶 Как следовать принципу DRY при настройке Apache APISIX
📨 Как работают очереди и брокеры сообщений
🎮⚙️ Неправильные настройки импорта в Unity убивают вашу игру
🛠️🎯 12 инструментов для разработки крутого фронтенда
🚀💾⚡️ Protocol Buffers: самая эффективная бинарная альтернатива текстовому формату

Библиотека пхпшника | PHP, Laravel, Symfony, CodeIgniter

08 Nov, 08:08


⚡️Самые полезные каналы по PHP в одной папке

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

Добавляйте 👉 тык сюда

Библиотека пхпшника | PHP, Laravel, Symfony, CodeIgniter

08 Nov, 07:03


🤓 Git Gud — игра для изучения Git

Это игра с командной строкой. В ней уровни разделены от простого к экспертному.

🔗 Ссылка

Библиотека пхпшника | PHP, Laravel, Symfony, CodeIgniter

07 Nov, 18:02


🔎Пользуетесь ли вы какими-либо иностранными новостными ресурсами по программированию на регулярной основе? Если да, то какими?🔽

Библиотека пхпшника | PHP, Laravel, Symfony, CodeIgniter

07 Nov, 11:00


Как Elasticsearch поломал сборки и «обнулил» звёзды в Github

В один прекрасный день репозиторий elasticsearch-php на гитхабе выдал 404 ошибку. Что было дальше — в статье.

Библиотека пхпшника | PHP, Laravel, Symfony, CodeIgniter

07 Nov, 07:02


Скрытые преимущества модульного PHP: Как создавать масштабируемые приложения

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

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

Библиотека пхпшника | PHP, Laravel, Symfony, CodeIgniter

06 Nov, 18:01


Что такое план выполнения запроса и как его узнать?

План выполнения запроса (Query Execution Plan) — это детальный анализ того, как база данных будет выполнять запрос, включая порядок обработки данных, используемые индексы, методы соединения и другие оптимизации запроса. Понимание плана выполнения запроса может помочь оптимизировать производительность запросов, выявляя возможные проблемы и улучшая структуру запроса или индексы.

В разных системах управления базами данных (СУБД) есть различные способы получения плана выполнения запроса. Ниже приведены общие методы для некоторых из них:

MySQL / MariaDB:
Используйте ключевое слово EXPLAIN перед запросом SQL.

PostgreSQL:
Используйте ключевое слово EXPLAIN перед запросом SQL.
Для более подробного анализа используйте ключевое слово EXPLAIN ANALYZE.

SQL Server:
Используйте ключевое слово EXPLAIN перед запросом SQL.
Для более подробного анализа используйте команду SET SHOWPLAN_TEXT ON;, а затем выполните запрос.

SQLite:
Используйте ключевое слово EXPLAIN QUERY PLAN перед запросом SQL.

Oracle:
Используйте инструкцию EXPLAIN PLAN FOR.

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

Библиотека пхпшника | PHP, Laravel, Symfony, CodeIgniter

06 Nov, 11:01


#memes

Библиотека пхпшника | PHP, Laravel, Symfony, CodeIgniter

06 Nov, 07:00


Fetch PHP

Легкий пакет для выполнения HTTP-запросов, вдохновленный JavaScript fetch.

Библиотека пхпшника | PHP, Laravel, Symfony, CodeIgniter

05 Nov, 18:08


Не забудьте оставить комментарий с вашими мыслями об ИИ в программировании! Какие преимущества и недостатки вы видите? Какие инструменты рекомендуете попробовать коллегам? 🤔💬

Библиотека пхпшника | PHP, Laravel, Symfony, CodeIgniter

05 Nov, 18:02


Привет, друзья! 👋

Мы готовим статью об ИИ-инструментах для программирования в 2024 году и хотим услышать ваше мнение! 🤖💻 Поделитесь своим опытом и помогите нам сделать материал еще полезнее. Самые интересные ответы войдут в статью! 🏆

Библиотека пхпшника | PHP, Laravel, Symfony, CodeIgniter

05 Nov, 07:00


Создание HTTP-потоков в PHP с помощью Symfony HTTP Client и Ollama API

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

Чтобы реализовать стриминг данных в PHP с использованием Symfony HTTP Client, нужно:

🔹 Настроить HTTP клиент и задать конечную точку API.
🔹 Отправить запрос с параметрами, указывая модель ИИ и текстовый запрос.
🔹 Проверить статус ответа перед обработкой данных, чтобы убедиться в успешности запроса.
🔹 Использовать возможность Symfony получать ответ порциями, что позволяет обрабатывать каждый фрагмент данных сразу по мере поступления.

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

Библиотека пхпшника | PHP, Laravel, Symfony, CodeIgniter

04 Nov, 20:02


🧑‍💻 Статьи для IT: как объяснять и распространять значимые идеи

Напоминаем, что у нас есть бесплатный курс для всех, кто хочет научиться интересно писать — о программировании и в целом.

Что: семь модулей, посвященных написанию, редактированию, иллюстрированию и распространению публикаций.

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

👉Материалы регулярно дополняются, обновляются и корректируются. А еще мы отвечаем на все учебные вопросы в комментариях курса.

Библиотека пхпшника | PHP, Laravel, Symfony, CodeIgniter

04 Nov, 18:00


💬Данные в laravel загружаются быстрее, если целевое значение является целым числом.

Используйте 𝘄𝗵𝗲𝗿𝗲𝗜𝗻𝘁𝗲𝗴𝗲𝗿𝗜𝗻𝗥𝗮𝘄() вместо метода 𝘄𝗵𝗲𝗿𝗲𝗜𝗻(), чтобы быстрее загружать данные, когда целевое значение является целым числом.

Библиотека пхпшника | PHP, Laravel, Symfony, CodeIgniter

28 Oct, 18:00


💬Знаете ли вы, что вы можете использовать «scan» в Laravel для разбора строки, введенной в коллекцию, в соответствии с форматом, поддерживаемым встроенной функцией PHP «sscanf»? 🚀

Библиотека пхпшника | PHP, Laravel, Symfony, CodeIgniter

28 Oct, 07:06


Как обновить устаревшую функцию PHPUnit withConsecutive()

В PHPUnit 9 метод withConsecutive() был объявлен устаревшим, а в PHPUnit 10 — удалён, что вызвало множество вопросов на форумах и в проектах. Это изменение оказалось неудобным для разработчиков, так как прямой замены для метода не предусмотрено, и обновление зачастую требует много времени. Однако существует способ заменить withConsecutive(), который делает тесты более гибкими и читаемыми.

Метод withConsecutive() использовался для проверки параметров вызова метода в разном порядке. Например, при первом вызове ожидался один набор параметров, при втором — другой. Однако замена его с помощью метода willReturnCallback() позволяет использовать более гибкий подход. В новом коде параметры проверяются в переданном в willReturnCallback() анонимном методе, где также можно отслеживать номер вызова.

Для этого используется объект InvokedCount, который увеличивает значение с каждым вызовом. Мы можем проверять параметры по вызовам, используя метод getInvocationCount() (в PHPUnit 10 переименованный в numberOfInvocations()).

Преимущества перехода на willReturnCallback() включают:

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

Кроме того, с использованием обычного PHP-кода можно легко внедрять в тесты необходимые исключения, возвращаемые значения и прочие проверки. Такой подход делает тесты проще и гибче, а код становится более поддерживаемым.

Библиотека пхпшника | PHP, Laravel, Symfony, CodeIgniter

27 Oct, 18:00


Какое криптографическое расширение предоставляет возможность генерации и проверки цифровых подписей?

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

#вопросы_с_собеседований

Библиотека пхпшника | PHP, Laravel, Symfony, CodeIgniter

27 Oct, 11:00


#memes

Библиотека пхпшника | PHP, Laravel, Symfony, CodeIgniter

27 Oct, 07:05


Loupe

Полнотекстовая поисковая система с токенизацией, стеммингом, устойчивостью к опечаткам, фильтрами и географической поддержкой, основанная на чистом PHP и SQLite.

Библиотека пхпшника | PHP, Laravel, Symfony, CodeIgniter

26 Oct, 18:00


Куда движется Laravel? Обзор интервью с Taylor Otwell

На канале ThePrimeTime недавно вышло интервью с создателем Laravel Тейлором, и здесь находится обзор этого интервью на русском языке

Библиотека пхпшника | PHP, Laravel, Symfony, CodeIgniter

26 Oct, 11:00


📊🚀 Почему все говорят о Kafka?

Хочешь узнать, как обрабатывать миллионы событий в секунду и почему такие гиганты, как Netflix и Uber, без ума от Kafka? Давай разберемся, как этот инструмент может превратить поток данных в золотую жилу для твоего проекта.

Читать статью

Библиотека пхпшника | PHP, Laravel, Symfony, CodeIgniter

26 Oct, 07:07


Глубокое погружение в сессии в Laravel

При создании приложений Laravel почти гарантированно придется иметь дело с сессиями. Они являются фундаментальной частью веб-разработки.

В этой статье рассказано о том, что такое сессии, как они работают в Laravel и как вы можете работать с ними в своих приложениях.

Затем будет показано, как можно взаимодействовать с сессиями, используя «классы сессий», чтобы избежать распространенных ошибок, которые часто встречаются при работе над приложениями Laravel, а также, как можно тестировать данные сессий в Laravel.

Библиотека пхпшника | PHP, Laravel, Symfony, CodeIgniter

25 Oct, 11:01


💻🤔 Код сожаления: 10 ошибок, о которых жалеют даже опытные программисты

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


✔️Читать статью

Библиотека пхпшника | PHP, Laravel, Symfony, CodeIgniter

25 Oct, 07:04


PostgreSQL захватил мир баз данных

На карточке показано, как PostgreSQL интегрируется с различными системами и инструментами

Библиотека пхпшника | PHP, Laravel, Symfony, CodeIgniter

24 Oct, 18:01


У каждого такое было...

Давайте в комментариях соберём лучшие отмазки для айтишников.

Начинаем: «Не баг, а фича». Продолжаем 👇

Библиотека пхпшника | PHP, Laravel, Symfony, CodeIgniter

24 Oct, 12:32


🧪 Чем заменить Postman: 5 отличных инструментов для разработки API

Postman долгое время был основным инструментом для разработки и тестирования API, но сейчас для большинства разработчиков его ограничения стали перевешивать преимущества. Рассмотрим альтернативные инструменты, которые могут предложить больше возможностей, чем Postman — даже в бесплатной версии.

👉Читаем здесь

Библиотека пхпшника | PHP, Laravel, Symfony, CodeIgniter

24 Oct, 11:00


«Как я делал систему сбора данных на провинциальном заводе и что из этого вышло»

Автор делится историей о том, как воплощал свой Pet-проект в рамках промышленного предприятия и к чему это привело.

Библиотека пхпшника | PHP, Laravel, Symfony, CodeIgniter

24 Oct, 07:04


Автоматизация извлечения переводов в Laravel с помощью пользовательской команды Artisan

Здесь рассказано о создании пользовательской команды Artisan, которая просканирует вашу кодовую базу Laravel, извлечет весь текст, используемый в помощнике __(), и выведет переводы в JSON-файл для конкретной локали.

Библиотека пхпшника | PHP, Laravel, Symfony, CodeIgniter

23 Oct, 18:00


https://t.me/php_interview_lib/494

Библиотека пхпшника | PHP, Laravel, Symfony, CodeIgniter

23 Oct, 11:00


#memes

Библиотека пхпшника | PHP, Laravel, Symfony, CodeIgniter

23 Oct, 09:04


⚡️Разыгрываем флагманский смартфон

«Библиотека программиста» разыгрывает один из трех смартфонов на выбор:
🔹Samsung Galaxy S24 Ultra на 1 ТБ
🔹Xiaomi 14 Ultra на 512 ГБ
🔹iPhone 16 Pro Max на 512 ГБ

🔥 А еще 99 участников розыгрыша получат скидку 50% на наш курс Базовые модели ML и приложения!
Промокод будет действителен до 20 ноября.

Условия просты:
→ подписаться на Библиотека нейротекста
→ подписаться на Библиотека нейрозвука
→ подписаться на Библиотека нейрокартинок
→ нажать на кнопку «Участвовать» под этим постом

Итоги появятся 30 октября в 20:00 по московскому времени в нашем канале Библиотека программиста. Затем мы свяжемся с победителем, который сам выберет смартфон. Тем, кто получит промокод, мы вышлем его в течение недели после окончания розыгрыша.

⚠️ Убедитесь, что вам можно написать в личные сообщения или следите за результатами — если мы не сможем с вами связаться, то не сможем и отправить приз. Доставить мы можем только в города России и Беларуси.

Библиотека пхпшника | PHP, Laravel, Symfony, CodeIgniter

23 Oct, 07:08


Reli

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

Библиотека пхпшника | PHP, Laravel, Symfony, CodeIgniter

22 Oct, 18:01


💬 Вы когда-нибудь ощущали, что не заслуживаете той зарплаты, которую получаете?

❤️ — да, знакомо это чувство
👍 — я считаю, что получаю ровно столько, сколько заслуживаю
🤔 — мне наоборот кажется, что мне недостаточно много платят

#интерактив

Библиотека пхпшника | PHP, Laravel, Symfony, CodeIgniter

22 Oct, 07:00


Использование Twig для визуализации Markdown

Шаблонизатор Twig можно использовать для генерации не только HTML, но и других форматов контента, таких как Markdown, JSON и простой текст. Этот подход позволяет создавать универсальные решения для работы с данными в различных каналах.

Пример демонстрирует, как с помощью Symfony HTTP Client получить данные о рецепте с внешнего API и вывести их в формате Markdown. В статье подробно описаны шаги по интеграции нескольких компонентов Symfony: HTTP-клиента для работы с API и Twig для обработки и вывода данных.

Библиотека пхпшника | PHP, Laravel, Symfony, CodeIgniter

22 Oct, 06:00


Вакансии «Библиотеки программиста» — ждем вас в команде!

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

Подробности тут

Мы предлагаем частичную занятость и полностью удаленный формат работы — можно совмещать с основной и находиться в любом месте🌴

Ждем ваших откликов 👾

Библиотека пхпшника | PHP, Laravel, Symfony, CodeIgniter

21 Oct, 20:03


🧑‍💻 Статьи для IT: как объяснять и распространять значимые идеи

Напоминаем, что у нас есть бесплатный курс для всех, кто хочет научиться интересно писать — о программировании и в целом.

Что: семь модулей, посвященных написанию, редактированию, иллюстрированию и распространению публикаций.

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

👉Материалы регулярно дополняются, обновляются и корректируются. А еще мы отвечаем на все учебные вопросы в комментариях курса.

Библиотека пхпшника | PHP, Laravel, Symfony, CodeIgniter

21 Oct, 18:00


💻В отношениях «многие-ко-многим» можно добавить операторы where в таблицу pivot, используя метод wherePivot.

Библиотека пхпшника | PHP, Laravel, Symfony, CodeIgniter

21 Oct, 07:00


Распространенные ошибки PHP: Решение часто встречающихся проблем

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

Библиотека пхпшника | PHP, Laravel, Symfony, CodeIgniter

20 Oct, 18:00


Расскажите о шаблонах GRASP.

Шаблоны GRASP (General Responsibility Assignment Software Patterns) — это набор принципов проектирования объектно-ориентированного кода, которые помогают определить, какие классы или объекты будут выполнять конкретные задачи и ответственности. Они помогают улучшить структуру кода, делая его более гибким, читаемым и поддерживаемым.

Ниже представлены основные шаблоны GRASP:

1. Expert (Эксперт) — данный шаблон назначает ответственность объекту, который обладает наиболее полной информацией для выполнения определенной задачи. Таким образом, эксперт в данном контексте является наиболее квалифицированным объектом для выполнения определенной операции.

2. Creator (Создатель) — данный шаблон определяет, что объект должен быть ответственным за создание других объектов. То есть, если объект А тесно связан с объектом В и может быть считаться его создателем инициализации, то объект А должен брать на себя ответственность за создание объекта В.

3. Controller (Контроллер) — данный шаблон назначает объекту ответственность контроля за интерфейсом пользователя и управления потоком данных. Контроллер обрабатывает пользовательский ввод и инициирует действия в системе.

4. Low Coupling (Низкая связанность) — данный шаблон подразумевает, что объект должен иметь наименьшую возможную зависимость от других объектов. Это достигается путем использования абстракций и интерфейсов, чтобы объекты могли взаимодействовать, не зная подробности друг о друге.

5. High Cohesion (Высокая связность) — данный шаблон подразумевает, что каждый класс должен представлять собой логическую единицу функциональности. Класс должен иметь одну ответственность и хорошо определенный смысл.

6. Indirection (Индиректирование) — данный шаблон назначает объекту посредническую роль для связи между другими объектами. То есть, объект А не обращается напрямую к объекту В, а связь между ними возникает через объект-посредник.

7. Polymorphism (Полиморфизм) — данный шаблон направлен на использование полиморфизма в объектно-ориентированном программировании. Полиморфизм позволяет работать с разными типами объектов через один и тот же интерфейс, что делает систему более гибкой и расширяемой.

#вопросы_с_собеседований

Библиотека пхпшника | PHP, Laravel, Symfony, CodeIgniter

20 Oct, 11:01


#memes

Библиотека пхпшника | PHP, Laravel, Symfony, CodeIgniter

20 Oct, 07:00


phpstan-error-formatter

Минималистичный форматер ошибок для PHPStan

Библиотека пхпшника | PHP, Laravel, Symfony, CodeIgniter

19 Oct, 18:00


Переход на Go глазами PHP-разработчика: 5 подводных камней

Автор — опытный PHP-разработчик, перешедший на Go. Он решил поделиться, с чем столкнулся во время этого перехода он и его коллеги.

Библиотека пхпшника | PHP, Laravel, Symfony, CodeIgniter

19 Oct, 07:05


Понимание разницы между pluck() и select() в Laravel 11

В Laravel для работы с данными широко используются методы pluck() и select(). Несмотря на внешнее сходство, они выполняют разные задачи.

Основные различия между pluck() и select()

✔️Назначение:

pluck() используется для извлечения одного атрибута или пары ключ-значение.
select() позволяет получить несколько атрибутов для каждого элемента коллекции.

✔️Возвращаемая структура:

pluck() возвращает плоский массив значений или ассоциативный массив при использовании второго ключа.
select() возвращает коллекцию массивов с выбранными ключами.

Когда использовать каждый метод?

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

Библиотека пхпшника | PHP, Laravel, Symfony, CodeIgniter

18 Oct, 18:10


#дайджест новостей по PHP за неделю:

🔎PHP 8.4.0 RC2 доступен для тестирования — Команда PHP рада сообщить о выпуске PHP 8.4.0, RC2. Это второй релиз-кандидат, продолжающий цикл выпуска PHP 8.4

🔎Выпущен CakePHP 5.1.1 — Улучшения: Исправлена регрессия в генерации мета-тегов. Исправлены ошибки отсутствия метода в приложениях, использующих только консоль. Добавлен интерфейс EventAwareApplicationInterface и многое другое!

🔎Laravel 11.26 выпущен — Команда Laravel выпустила версию 11.26, в которой появилась возможность изящной остановки пула процессов, использование Enums при определении Rate Limiting, команда Artisan для создания Job Middleware и многое другое.

🔎Неделя Symfony #928 (7-13 октября 2024 года) — На этой неделе разработка была сосредоточена на Symfony 7.2, так как продолжалось слияние твиков и функций в преддверии его релиза в конце ноября 2024 года.

Библиотека пхпшника | PHP, Laravel, Symfony, CodeIgniter

18 Oct, 07:00


📨 Как работают очереди и брокеры сообщений

Очередь сообщений — структура данных, которая хранит сообщения в порядке FIFO. Представьте, что вашему приложению нужно обрабатывать файлы, которые загружают пользователи. Очередь сообщений в этом случае может выступать как очередь задач, обрабатывающая задания асинхронно:

1️⃣ Пользователь загружает большой файл для обработки.
2️⃣ Веб-сервер принимает файл и создает задание.
3️⃣ Задание добавляется в очередь задач, а файл загружается в объектное хранилище.
4️⃣ Позже рабочий процесс забирает задания из очереди одно за другим и обрабатывает их, получая файл из хранилища.

Это самый простой пример. Очереди сообщений можно использовать для:

✔️ Планирования и управления фоновыми задачами.
✔️ Распределения задач между несколькими рабочими процессами.
✔️ Управления сервисами подписки и уведомлений.
✔️ Буферизации данных.
✔️ Повторных попыток обработки платежей и многого другого.

Подробнее читайте в нашем гайде 👇

🔗 Читать статью
🔗 Зеркало

Библиотека пхпшника | PHP, Laravel, Symfony, CodeIgniter

17 Oct, 18:01


Если бы у вас была возможность лично выбрать одну новую фишку, которая появится в следующей версии языка, что бы это было?⬇️⬇️⬇️

Библиотека пхпшника | PHP, Laravel, Symfony, CodeIgniter

17 Oct, 14:00


🔤 Код без боли: шрифты, которые спасут твои глаза

Если ты всё ещё не нашел идеальный шрифт для работы, эта статья может спасти твоё зрение.

Рассказываем:
▪️как настроить шрифт в Visual Studio Code;
▪️что такое лигатуры шрифтов;
▪️какие шрифты для программирования популярны.

👉 Читать обо всём здесь

Библиотека пхпшника | PHP, Laravel, Symfony, CodeIgniter

17 Oct, 11:00


✔️Можно использовать метод rawValue(), чтобы получить значение из SQL-выражения.

Библиотека пхпшника | PHP, Laravel, Symfony, CodeIgniter

17 Oct, 07:07


Нормализация фантазийного текста в обычный текст в Laravel

Статья посвящена проблеме обработки «фантазийного текста» (fancy text) — текста, вводимого пользователями в различных стилях и форматах, таких как символы Unicode, диакритические знаки, лигатуры и другие визуально нестандартные элементы, включая математические символы алфавита. Эти вариации текста могут вызвать проблемы с консистентностью данных, поисковой функцией и общей производительностью системы. Примером такой проблемы является то, что PHP не может корректно кодировать деформированные символы UTF-8 в JSON, что может привести к повреждению данных или сбоям.

Решение проблемы заключается в использовании функции нормализации текста в PHP, которая преобразует такие «фантазийные» символы в обычный текст. В статье предложен пример кода, использующий класс Normalizer из расширения PHP Internationalization (intl). Функция проверяет, нормализован ли текст в одном из нескольких возможных форматов (NFC, NFD, NFKC, NFKD и т.д.), и, если нет, нормализует его до соответствующего формата. Таким образом, можно обеспечить корректную обработку текста, сравнение и хранение данных.

Библиотека пхпшника | PHP, Laravel, Symfony, CodeIgniter

16 Oct, 18:00


Что такое межсайтовый скриптинг?

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

Существуют два основных типа межсайтового скриптинга:

Хранимый (Stored) XSS: Злоумышленник вводит вредоносный скрипт непосредственно на сервере, обычно через поля ввода или комментарии на веб-сайте. Затем этот скрипт сохраняется на сервере и выполняется при просмотре страницы другими пользователями.

Рефлектированный (Reflected) XSS: Вредоносный скрипт передается на сервер через параметры URL, формы или другие входные данные. Затем сервер возвращает этот скрипт в браузер пользователя, где он выполняется. Например, злоумышленник может создать ссылку, содержащую вредоносный скрипт, и убедить пользователя перейти по этой ссылке.

Межсайтовый скриптинг может быть использован для кражи сессий, перенаправления на фишинговые сайты, введения пользователя в заблуждение, кражи конфиденциальных данных и многих других атак. Для защиты от XSS атак следует использовать соответствующие техники санитизации входных данных, контекстного экранирования и использования Content Security Policy (CSP).

#вопросы_с_собеседований

Библиотека пхпшника | PHP, Laravel, Symfony, CodeIgniter

16 Oct, 15:01


🐘 Что нового в PHP 8.4 и как это повлияет на вашу работу?

Приглашаем на открытый урок

🗓 23 октября в 20:00 МСК

🆓 Бесплатно. Урок в рамках старта курса «PHP Developer. Professional»

На вебинаре разберем:

- какие нововведения появятся в PHP 8.4;
- как эти изменения повлияют на вашу работу;
- какие новые функции и улучшения ждут разработчиков.

Спикер Александр Пряхин — технический руководитель юнита в Авито, ITIL4 Certified.

Все участники вебинара получат специальную цену на обучение!

🔗 Ссылка на регистрацию

Реклама. ООО «Отус онлайн-образование», ОГРН 1177746618576, www.otus.ru

Erid 2Vtzqv6hcvX

Библиотека пхпшника | PHP, Laravel, Symfony, CodeIgniter

16 Oct, 11:00


#memes

Библиотека пхпшника | PHP, Laravel, Symfony, CodeIgniter

16 Oct, 07:00


Tiny File Manager

Однофайловое PHP-приложение для хранения, загрузки, редактирования и управления файлами и папками в режиме онлайн через веб-браузер. Приложение работает на PHP 5.5+, позволяет создавать несколько пользователей и каждый пользователь может иметь свою собственную директорию, встроенная поддержка управления текстовыми файлами с помощью cloud9 IDE и поддерживает подсветку синтаксиса для более чем 150+ языков и более 35+ тем.

Библиотека пхпшника | PHP, Laravel, Symfony, CodeIgniter

16 Oct, 06:03


Самые полезные каналы для программистов в одной подборке!

Сохраняйте себе, чтобы не потерять 💾

🔥Для всех

Библиотека программиста — новости, статьи, досуг, фундаментальные темы
Книги для программистов
IT-мемы
Proglib Academy — тут мы рассказываем про обучение и курсы
Азбука айтишника — здесь мы познаем азы из мира программирования

🤖Про нейросети
Библиотека робототехники и беспилотников | Роботы, ИИ, интернет вещей
Библиотека нейрозвука | Транскрибация, синтез речи, ИИ-музыка
Библиотека нейротекста | ChatGPT, Gemini, Bing
Библиотека нейровидео | Sora AI, Runway ML, дипфейки
Библиотека нейрокартинок | Midjourney, DALL-E, Stable Diffusion

#️⃣C#

Книги для шарпистов | C#, .NET, F#
Библиотека шарписта — полезные статьи, новости и обучающие материалы по C#
Библиотека задач по C# — код, квизы и тесты
Библиотека собеса по C# — тренируемся отвечать на каверзные вопросы во время интервью и технического собеседования
Вакансии по C#, .NET, Unity Вакансии по PHP, Symfony, Laravel

☁️DevOps

Библиотека devops’а — полезные статьи, новости и обучающие материалы по DevOps
Вакансии по DevOps & SRE
Библиотека задач по DevOps — код, квизы и тесты
Библиотека собеса по DevOps — тренируемся отвечать на каверзные вопросы во время интервью и технического собеседования

🐘PHP

Библиотека пхпшника — полезные статьи, новости и обучающие материалы по PHP
Вакансии по PHP, Symfony, Laravel
Библиотека PHP для собеса — тренируемся отвечать на каверзные вопросы во время интервью и технического собеседования
Библиотека задач по PHP — код, квизы и тесты

🐍Python

Библиотека питониста — полезные статьи, новости и обучающие материалы по Python
Вакансии по питону, Django, Flask
Библиотека Python для собеса — тренируемся отвечать на каверзные вопросы во время интервью и технического собеседования
Библиотека задач по Python — код, квизы и тесты

Java

Книги для джавистов | Java
Библиотека джависта — полезные статьи по Java, новости и обучающие материалы
Библиотека Java для собеса — тренируемся отвечать на каверзные вопросы во время интервью и технического собеседования
Библиотека задач по Java — код, квизы и тесты
Вакансии для java-разработчиков

👾Data Science

Книги для дата сайентистов | Data Science
Библиотека Data Science — полезные статьи, новости и обучающие материалы по Data Science
Библиотека Data Science для собеса — тренируемся отвечать на каверзные вопросы во время интервью и технического собеседования
Библиотека задач по Data Science — код, квизы и тесты
Вакансии по Data Science, анализу данных, аналитике, искусственному интеллекту

🦫Go

Книги для Go разработчиков
Библиотека Go разработчика — полезные статьи, новости и обучающие материалы по Go
Библиотека Go для собеса — тренируемся отвечать на каверзные вопросы во время интервью и технического собеседования
Библиотека задач по Go — код, квизы и тесты
Вакансии по Go

🧠C++

Книги для C/C++ разработчиков
Библиотека C/C++ разработчика — полезные статьи, новости и обучающие материалы по C++
Библиотека C++ для собеса — тренируемся отвечать на каверзные вопросы во время интервью и технического собеседования
Библиотека задач по C++ — код, квизы и тесты
Вакансии по C++

💻Другие каналы

Библиотека фронтендера
Библиотека мобильного разработчика
Библиотека хакера
Библиотека тестировщика
Библиотека разработчика игр | Gamedev, Unity, Unreal Engine
Вакансии по фронтенду, джаваскрипт, React, Angular, Vue
Вакансии для мобильных разработчиков
Вакансии по QA тестированию
InfoSec Jobs — вакансии по информационной безопасности

📁Чтобы добавить папку с нашими каналами, нажмите 👉сюда👈

Также у нас есть боты:
Бот с IT-вакансиями
Бот с мероприятиями в сфере IT

Мы в других соцсетях:
🔸VK
🔸YouTube
🔸Дзен
🔸Facebook *
🔸Instagram *

* Организация Meta запрещена на территории РФ

Библиотека пхпшника | PHP, Laravel, Symfony, CodeIgniter

15 Oct, 18:01


#хочу_спросить

Задавайте любые вопросы о программировании и получайте ответы от пользователей. В комментариях под постом укажите #язык, #стек и/или #библиотеку, по которым задаете вопрос.

Библиотека пхпшника | PHP, Laravel, Symfony, CodeIgniter

15 Oct, 07:00


Laravel SoftDelete: Избегание проблемы уникальных ограничений

Если вы уже давно используете Laravel, особенно когда проекты связаны с целостностью данных, то, скорее всего, вы уже сталкивались с функцией SoftDelete. Это довольно полезная функция, поскольку вы можете «удалять» записи, не удаляя их из базы данных. Laravel просто добавляет временную метку deleted_at, так что запись помечается как удаленная, но остается в системе.

Библиотека пхпшника | PHP, Laravel, Symfony, CodeIgniter

14 Oct, 18:00


Поддержка нескольких ботов в DefStudio Telegraph

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

Библиотека пхпшника | PHP, Laravel, Symfony, CodeIgniter

14 Oct, 07:00


Использование Redis для кэширования в Laravel

Здесь рассматривается настройка Redis в приложении Laravel для использования его в качестве механизма кэширования.

Подготовка:
Необходимо установить Redis на компьютер (например, через Docker или напрямую на разных операционных системах).
Проверить, что Redis работает и соединение установлено.

Установка Redis в Laravel:
Для подключения PHP к Redis можно использовать два варианта: phpredis (PHP-расширение) или predis (библиотека). В статье предпочитается phpredis.

Настройка Laravel:
В конфигурационном файле config/database.php нужно задать параметры подключения к Redis, указав клиента (phpredis) и данные для подключения (хост, порт, база данных и пр.).
Настраиваются переменные окружения в .env файле: выбирается клиент, хост, порт и базы данных для хранения и кэширования.

Использование Redis в Laravel:
Laravel предоставляет фасады для работы с кэшем через Illuminate\Support\Facades\Cache. Основные операции включают:

🔸Получение элемента: Cache::get('ключ')
🔸Проверка наличия ключа: Cache::has('ключ')
🔸Добавление или обновление элемента: Cache::put('ключ', 'значение', $минуты)
🔸Удаление элемента: Cache::forget('ключ')
🔸Очистка всего кэша: Cache::flush()
🔸Специальные методы, например Cache::remember, позволяют добавить элемент, если его нет, и вернуть значение.

Поиск по шаблонам:
Для поиска ключей, соответствующих определенному шаблону, используется метод scan (вместо медленного метода keys). scan работает с курсором, что позволяет постепенно обрабатывать ключи, избегая задержек в работе приложения.

Удаление ключей по шаблону:
Используя scan, можно не только находить ключи, но и удалять их с помощью метода del. Важно учесть, что для успешного удаления нужно удалить префикс из ключей.

Библиотека пхпшника | PHP, Laravel, Symfony, CodeIgniter

13 Oct, 18:00


Что такое Views? Какие преимущества и недостатки?

Представления (Views) в базе данных — это виртуальные таблицы, которые содержат результат выполнения SQL-запроса. Представление не хранит данные самостоятельно, оно отображает данные, которые уже существуют в базовых таблицах, в структурированном виде. Представление может включать строки и столбцы из одной или нескольких таблиц.

Преимущества представлений (Views):

🟢Упрощение сложных запросов:

Представление может быть создано на основе сложных SQL-запросов. Это упрощает использование сложной логики, делая её более доступной и удобной для пользователей.
Вместо того чтобы писать сложный запрос каждый раз, можно просто обращаться к представлению.

🟢Безопасность данных:

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

🟢Абстракция данных:

Представления позволяют скрывать сложные детали структуры базы данных. Например, пользователю может быть предоставлен доступ к представлению, в то время как реальная структура данных может измениться (новые столбцы, объединения таблиц и т. д.), но представление останется неизменным.
Это облегчает поддержку кода, так как внешний интерфейс базы данных остаётся стабильным.

🟢Повторное использование запросов:

Представления позволяют использовать один и тот же запрос в разных частях приложения. Это снижает дублирование кода.

🟢Производительность:

В некоторых случаях, особенно если представление материализованное (materialized view), оно может улучшить производительность, так как результат запроса может быть сохранён и обновлён периодически, а не вычисляться при каждом обращении.

Недостатки представлений (Views):

🔸Ограниченные возможности обновления:

Некоторые представления не поддерживают обновление данных (INSERT, UPDATE, DELETE). Это особенно актуально для представлений, созданных на основе сложных запросов с агрегатами (GROUP BY, SUM и т. д.), объединений (JOIN) или подзапросов.
В этих случаях представление становится «только для чтения», что ограничивает его полезность в ряде ситуаций.

🔸Снижение производительности:

Если представление не материализовано, каждый раз при обращении к нему SQL-запрос будет выполняться заново. Это может быть ресурсоёмко, особенно для сложных запросов и больших объёмов данных.
В отличие от таблиц, которые хранят данные на физическом уровне, представления могут потребовать дополнительных вычислений при каждом использовании.

🔸Отсутствие индексов:

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

🔸Зависимость от структуры базовых таблиц:

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

🔸Сложность управления:

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

#вопросы_с_собеседований

Библиотека пхпшника | PHP, Laravel, Symfony, CodeIgniter

13 Oct, 11:00


#memes

Библиотека пхпшника | PHP, Laravel, Symfony, CodeIgniter

13 Oct, 07:00


Comments Density Analyzer

Инструмент контроля качества кода для PHP, который даст вам представление о составе комментариев в кодовой базе и поможет улучшить документацию

11,738

subscribers

975

photos

10

videos