Принцип разделения интерфейса (ISP) с использованием PHP: принцип SOLID
Здесь рассматривается Принцип разделения интерфейса (ISP) в программировании. ISP подобен организации библиотеки, где каждый класс должен реализовывать только те методы, которые ему нужны, а не те, которые ему не нужны, подобно тому, как человек не должен брать книги из каждого раздела библиотеки. Нарушение этого принципа может привести к избыточности интерфейсов и затруднить поддержку и расширение кода.
Далее представлен пример кода, нарушающего принцип ISP, и показывает, как его можно исправить, разделив большой интерфейс на более мелкие, специализированные. Разделение интерфейса на более мелкие кусочки помогает классам быть более фокусированными на своих конкретных обязанностях, что повышает читаемость и управляемость кода, а также облегчает расширение и модификацию.
Здесь рассматривается Принцип разделения интерфейса (ISP) в программировании. ISP подобен организации библиотеки, где каждый класс должен реализовывать только те методы, которые ему нужны, а не те, которые ему не нужны, подобно тому, как человек не должен брать книги из каждого раздела библиотеки. Нарушение этого принципа может привести к избыточности интерфейсов и затруднить поддержку и расширение кода.
Далее представлен пример кода, нарушающего принцип ISP, и показывает, как его можно исправить, разделив большой интерфейс на более мелкие, специализированные. Разделение интерфейса на более мелкие кусочки помогает классам быть более фокусированными на своих конкретных обязанностях, что повышает читаемость и управляемость кода, а также облегчает расширение и модификацию.
DEV Community
Interface Segregation Principle (ISP) By Using PHP : SOLID Principle
Introduction: Hey there, fellow coders! Welcome to my article where we’re going to dive...
🎉4❤1👍1
Логирование с помощью Monolog
В этом видео будет рассмотрен пакет Monolog для логирования PHP-приложения.
Monolog отправляет ваши логи в файлы, сокеты, почтовые ящики, базы данных и различные веб-сервисы. Специальные обработчики позволяют создавать расширенные стратегии ведения логов.
Эта библиотека реализует интерфейс PSR-3, который вы можете использовать в своих собственных библиотеках, чтобы обеспечить максимальную совместимость.
В этом видео будет рассмотрен пакет Monolog для логирования PHP-приложения.
Monolog отправляет ваши логи в файлы, сокеты, почтовые ящики, базы данных и различные веб-сервисы. Специальные обработчики позволяют создавать расширенные стратегии ведения логов.
Эта библиотека реализует интерфейс PSR-3, который вы можете использовать в своих собственных библиотеках, чтобы обеспечить максимальную совместимость.
YouTube
PHP Logging with Monolog
This video will explore the Monolog package for logging in PHP applications.
We'll cover key concepts like logger objects, handlers, formatters and integration with Better Stack for centralized storage and analysis of logs.
► RELATED GUIDES
How to Get…
We'll cover key concepts like logger objects, handlers, formatters and integration with Better Stack for centralized storage and analysis of logs.
► RELATED GUIDES
How to Get…
🥰3👍2❤1
💬 Вы пользуетесь ИИ-инструментами для автодополнения кода (типа GitHub Copilot)?
👍 — постоянно пользуюсь
🤔 — не пробовал
🥱 — пробовал, мне не понравилось
#интерактив
👍 — постоянно пользуюсь
🤔 — не пробовал
🥱 — пробовал, мне не понравилось
#интерактив
🤔94👍91🥱36👾3
Пять инструментов, которые сделают вашу работу в командной строке более продуктивной
Здесь представлены пять инструментов командной строки, которые способны сделать работу более эффективной:
1️⃣Fast Node Manager (FNM): Управление версиями Node.js для эффективного переключения между проектами без необходимости помнить используемую версию Node.js. FNM автоматически устанавливает версию Node.js, указанную в файле .nvmrc, и позволяет установить новые версии Node.js из командной строки.
2️⃣ZSH-Autosuggestions: Предложения команд на основе истории ввода, что ускоряет выполнение команд без необходимости полного набора. Установка производится через zsh-autosuggestions и может быть настроена в файле ~/.zshrc.
3️⃣Zoxide: Интеллектуальная команда cd, запоминающая часто посещаемые директории, позволяющая быстро переходить к ним с помощью небольшого количества нажатий клавиш. Установка зависит от операционной системы и производится в файле ~/.zshrc.
4️⃣fzf (Fuzzy Finder): Универсальный инструмент для размытого поиска по выводу других команд, таких как zoxide или vim. Поддерживает быстрый доступ к истории команд, поиск и убийство процессов и другие функции.
5️⃣fzf-tab: Заменяет стандартное меню выбора завершения команды в zsh на fzf, что упрощает навигацию по файловой системе и другие задачи. Установка производится как плагин для Oh My Zsh или напрямую.
Каждый инструмент представлен с кратким описанием его возможностей, установки и настройки.
Здесь представлены пять инструментов командной строки, которые способны сделать работу более эффективной:
1️⃣Fast Node Manager (FNM): Управление версиями Node.js для эффективного переключения между проектами без необходимости помнить используемую версию Node.js. FNM автоматически устанавливает версию Node.js, указанную в файле .nvmrc, и позволяет установить новые версии Node.js из командной строки.
2️⃣ZSH-Autosuggestions: Предложения команд на основе истории ввода, что ускоряет выполнение команд без необходимости полного набора. Установка производится через zsh-autosuggestions и может быть настроена в файле ~/.zshrc.
3️⃣Zoxide: Интеллектуальная команда cd, запоминающая часто посещаемые директории, позволяющая быстро переходить к ним с помощью небольшого количества нажатий клавиш. Установка зависит от операционной системы и производится в файле ~/.zshrc.
4️⃣fzf (Fuzzy Finder): Универсальный инструмент для размытого поиска по выводу других команд, таких как zoxide или vim. Поддерживает быстрый доступ к истории команд, поиск и убийство процессов и другие функции.
5️⃣fzf-tab: Заменяет стандартное меню выбора завершения команды в zsh на fzf, что упрощает навигацию по файловой системе и другие задачи. Установка производится как плагин для Oh My Zsh или напрямую.
Каждый инструмент представлен с кратким описанием его возможностей, установки и настройки.
Laravel News
Five Tools That Will Make You More Productive on the Command Line - Laravel News
I’ve compiled a list of some of the CLI tools I think will make you a better, more productive developer on the command line.
👍3🥰1
#дайджест новостей по PHP за неделю:
🔎Выпущена версия CakePHP 4.5.4 — Улучшения: Исправлен Hash::insert() и пути, содержащие {s} и условия, а также данные, в которых все значения после {s} не являются массивами.
🔎Вышел Symfony 7.0.5 — Вот список наиболее важных изменений с версии 7.0.4.
🔎Неделя Symfony № 896 (26 февраля — 3 марта 2024 г.)
🔎Выпущена версия CakePHP 4.5.4 — Улучшения: Исправлен Hash::insert() и пути, содержащие {s} и условия, а также данные, в которых все значения после {s} не являются массивами.
🔎Вышел Symfony 7.0.5 — Вот список наиболее важных изменений с версии 7.0.4.
🔎Неделя Symfony № 896 (26 февраля — 3 марта 2024 г.)
Никогда не используйте функцию «empty»
Существует несколько способов проверить, что массив пуст в PHP. Использование этой функции может вызвать множество ошибок, так как она выполняет слишком много функций.
Рекомендуется использовать другие методы проверки, такие как count($var) === 0 или sizeof($var) === 0.
Вместо использования empty, рекомендуется использовать конкретные условия для проверки различных значений.
Если нужно проверить несколько переменных одновременно, можно объединить условия или создать закрытый метод с явным именем.
Существует несколько способов проверить, что массив пуст в PHP. Использование этой функции может вызвать множество ошибок, так как она выполняет слишком много функций.
Рекомендуется использовать другие методы проверки, такие как count($var) === 0 или sizeof($var) === 0.
Вместо использования empty, рекомендуется использовать конкретные условия для проверки различных значений.
Если нужно проверить несколько переменных одновременно, можно объединить условия или создать закрытый метод с явным именем.
DEV Community
Never use `empty` function in PHP
There are several ways to test that an array is empty in PHP, and the one I see most often...
🤔14👍6🥱6😁1
«Как мы приготовили массу блюд c помощью одного ингредиента: GraphQL»
Эта статья о базовой структуре, производительности, безопасности и гибкости GraphQL и будет интересна архитекторам, интеграторам, аналитикам и разработчикам, которые не ограничиваются рассмотрением информационных систем только с точки зрения «кода», а учитывают полный жизненный цикл системы, включая поддержку, развитие, систему управления знаниями и многое другое.
Эта статья о базовой структуре, производительности, безопасности и гибкости GraphQL и будет интересна архитекторам, интеграторам, аналитикам и разработчикам, которые не ограничиваются рассмотрением информационных систем только с точки зрения «кода», а учитывают полный жизненный цикл системы, включая поддержку, развитие, систему управления знаниями и многое другое.
Хабр
Как мы приготовили массу блюд c помощью одного ингредиента: GraphQL
Всем привет! Не говорите, что вам нечего приготовить, если у вас дома одна картошка. При смекалке и достаточном количестве специй — пюре, драники, запеканка, чипсы фри... Конечно, мы обсуждаем не...
❤1
Основные плагины для пользователей PHPStorm
Это обзор нескольких полезных плагинов для PhpStorm:
1️⃣Nord Theme: Этот плагин предлагает стильную тему оформления для PhpStorm, созданную на основе палитры Nord, которая представляет собой арктические синие оттенки, обеспечивающие чистый и элегантный внешний вид редактора.
2️⃣Laravel Idea: Этот премиум-плагин предоставляет ряд продуктивных функций для разработки Laravel-приложений в PhpStorm, включая автозаполнение маршрутов, поддержку моделей Eloquent, подсказки для правил валидации и генерацию кода.
3️⃣.env Files Support: Плагин обеспечивает поддержку файлов .env, позволяя автозаполнять переменные окружения и легко перемещаться между их использованием в коде и объявлением в файле .env.
4️⃣EditorConfig: Этот плагин помогает обеспечить согласованный стиль кода для разработчиков, работающих над одним проектом, поддерживая конфигурацию кодирования через файл .editorconfig.
5️⃣Collector — A Collection Plugin: Плагин добавляет поддержку коллекций Laravel и предоставляет ряд удобных рефакторингов для улучшения работы с ними.
6️⃣Codeium: AI Autocomplete and Chat: Этот бесплатный плагин предлагает функцию автозаполнения кода с использованием искусственного интеллекта и доступен для различных редакторов, включая PhpStorm.
7️⃣IntelliVue: Данный плагин обеспечивает поддержку Vue.js Single File Components в PhpStorm, добавляя дополнительную функциональность и удобные инструменты для работы с ними.
Это обзор нескольких полезных плагинов для PhpStorm:
1️⃣Nord Theme: Этот плагин предлагает стильную тему оформления для PhpStorm, созданную на основе палитры Nord, которая представляет собой арктические синие оттенки, обеспечивающие чистый и элегантный внешний вид редактора.
2️⃣Laravel Idea: Этот премиум-плагин предоставляет ряд продуктивных функций для разработки Laravel-приложений в PhpStorm, включая автозаполнение маршрутов, поддержку моделей Eloquent, подсказки для правил валидации и генерацию кода.
3️⃣.env Files Support: Плагин обеспечивает поддержку файлов .env, позволяя автозаполнять переменные окружения и легко перемещаться между их использованием в коде и объявлением в файле .env.
4️⃣EditorConfig: Этот плагин помогает обеспечить согласованный стиль кода для разработчиков, работающих над одним проектом, поддерживая конфигурацию кодирования через файл .editorconfig.
5️⃣Collector — A Collection Plugin: Плагин добавляет поддержку коллекций Laravel и предоставляет ряд удобных рефакторингов для улучшения работы с ними.
6️⃣Codeium: AI Autocomplete and Chat: Этот бесплатный плагин предлагает функцию автозаполнения кода с использованием искусственного интеллекта и доступен для различных редакторов, включая PhpStorm.
7️⃣IntelliVue: Данный плагин обеспечивает поддержку Vue.js Single File Components в PhpStorm, добавляя дополнительную функциональность и удобные инструменты для работы с ними.
Laravel News
Essential Plugins for PHPStorm Users - Laravel News
We've curated a collection of essential plugins for PhpStorm that we think you’ll enjoy. From our favorite theme to Laravel-specific tools to supercharge your PHP development and a free AI-powered autocomplete/chat plugin that feels like magic.
🥱13👍3❤1
Подмена функций стандартной библиотеки PHP с помощью xepozz/internal-mocker
Здесь описывается проблема подмены функций в PHP, которые уже загружены до момента подгрузки Composer Autoloader или других объявлений функций. Эта проблема встает, когда необходимо подменить функцию, которая уже существует в стандартной библиотеке PHP, но переопределить её нельзя из-за ошибки о том, что функция уже существует.
Для решения этой проблемы автор предлагает использовать библиотеку xepozz/internal-mocker, которая позволяет подменять функции на лету. Библиотека позволяет создать свою собственную функцию, которая будет эмулировать стандартную функцию, например, time(), и при этом сохранять её функциональность. Таким образом, можно подменять функции для тестирования или других целей.
Здесь описывается проблема подмены функций в PHP, которые уже загружены до момента подгрузки Composer Autoloader или других объявлений функций. Эта проблема встает, когда необходимо подменить функцию, которая уже существует в стандартной библиотеке PHP, но переопределить её нельзя из-за ошибки о том, что функция уже существует.
Для решения этой проблемы автор предлагает использовать библиотеку xepozz/internal-mocker, которая позволяет подменять функции на лету. Библиотека позволяет создать свою собственную функцию, которая будет эмулировать стандартную функцию, например, time(), и при этом сохранять её функциональность. Таким образом, можно подменять функции для тестирования или других целей.
Хабр
Подмена функций стандартной библиотеки PHP с помощью xepozz/internal-mocker
Цель Подмена (mock) функций, которые уже “загружены” в PHP еще до подгрузки Composer Autoloader, каких-либо include или других объвлений function name() {} Подмена не только из под не пустого...
🔥5👾4🥱1
🧑💻 Статьи для IT: как объяснять и распространять значимые идеи
Напоминаем, что у нас есть бесплатный курс для всех, кто хочет научиться интересно писать — о программировании и в целом.
Что: семь модулей, посвященных написанию, редактированию, иллюстрированию и распространению публикаций.
Для кого: для авторов, копирайтеров и просто программистов, которые хотят научиться интересно рассказывать о своих проектах.
👉Материалы регулярно дополняются, обновляются и корректируются. А еще мы отвечаем на все учебные вопросы в комментариях курса.
Напоминаем, что у нас есть бесплатный курс для всех, кто хочет научиться интересно писать — о программировании и в целом.
Что: семь модулей, посвященных написанию, редактированию, иллюстрированию и распространению публикаций.
Для кого: для авторов, копирайтеров и просто программистов, которые хотят научиться интересно рассказывать о своих проектах.
👉Материалы регулярно дополняются, обновляются и корректируются. А еще мы отвечаем на все учебные вопросы в комментариях курса.
Создание PHP SDK для Replicate AI
Здесь описывается процесс создания SDK (набора инструментов разработки программного обеспечения) на PHP для работы с API Replicate AI. Автор начинает с объяснения, что такое SDK и зачем оно нужно, а затем переходит к анализу документации API Replicate и определению ресурсов, с которыми нужно работать: Models (модели), Versions (версии) и Predictions (предсказания). Далее автор предлагает структуру SDK и предлагает реализацию основного класса «Client» и ресурса «Model». Он подчеркивает важность использования хорошего опыта разработчика при создании SDK и приводит примеры вызовов методов API через SDK. Кроме того, обсуждаются вопросы аутентификации и обработки ошибок. Автор заключает статью обещанием опубликовать репозиторий SDK на GitHub после его завершения и тестирования.
Здесь описывается процесс создания SDK (набора инструментов разработки программного обеспечения) на PHP для работы с API Replicate AI. Автор начинает с объяснения, что такое SDK и зачем оно нужно, а затем переходит к анализу документации API Replicate и определению ресурсов, с которыми нужно работать: Models (модели), Versions (версии) и Predictions (предсказания). Далее автор предлагает структуру SDK и предлагает реализацию основного класса «Client» и ресурса «Model». Он подчеркивает важность использования хорошего опыта разработчика при создании SDK и приводит примеры вызовов методов API через SDK. Кроме того, обсуждаются вопросы аутентификации и обработки ошибок. Автор заключает статью обещанием опубликовать репозиторий SDK на GitHub после его завершения и тестирования.
DEV Community
Building a PHP SDK for Replicate AI
If you haven’t already been introduced to Replicate AI, it’s an awesome API that allows you to deploy...
❤1
Forwarded from Библиотека девопса | DevOps, SRE, Sysadmin
🗺️ Где составить дорожную карту: ТОП-10 сервисов
Сервисы, которые подойдут для составления карьерной карты и не только.
Читать статью
#гайд
Сервисы, которые подойдут для составления карьерной карты и не только.
Читать статью
#гайд
🥱3❤2
🧨 Из грязи в князи: вкатился с нуля в IT за границей
❗ Мы ищем тех, кто начинал карьеру в IT за границей без опыта и специальной подготовки. Хотим услышать ваши истории успеха и препятствий, с которыми вы столкнулись.
‼️ Если вы готовы рассказать свою историю — напишите нам на [email protected]
❗ Мы ищем тех, кто начинал карьеру в IT за границей без опыта и специальной подготовки. Хотим услышать ваши истории успеха и препятствий, с которыми вы столкнулись.
‼️ Если вы готовы рассказать свою историю — напишите нам на [email protected]
🥱8👍3
Laravel Setting Pro
Пакет Laravel Setting Pro упрощает управление настройками приложения в Laravel и предоставляет эти ключевые функции:
Гибкое хранилище: выберите между файловым хранилищем или БД в соответствии с потребностями вашего приложения.
Гибкая база данных: выберите между MySQL или MongoDB или создайте собственное соединение DB для настройки.
Кэширование: повышение производительности с помощью автоматического кэширования настроек. Вы можете выбрать между файлом или redis или создать собственный драйвер кэша.
Поддержка очередей: обрабатывать настройки обновлений и удалений в фоновом режиме, обеспечивая плавные пользовательские впечатления.
Триггеры события: ответ на настройку изменений в режиме реального времени, используя события Laravel.
Глобальная вспомогательная функция и фасад: доступ и манипуляция настройками в любом месте вашего приложения Laravel с простой функцией настройки или настройкой фасада (даже в файлах конфигурации).
И многое другое!
Этот пакет предназначен для разработчиков, которые ищут эффективный и интуитивно понятный способ обработки настроек приложения. Он предлагает необходимые инструменты, сохраняя при этом процесс простым и обслуживаемым.
Пакет Laravel Setting Pro упрощает управление настройками приложения в Laravel и предоставляет эти ключевые функции:
Гибкое хранилище: выберите между файловым хранилищем или БД в соответствии с потребностями вашего приложения.
Гибкая база данных: выберите между MySQL или MongoDB или создайте собственное соединение DB для настройки.
Кэширование: повышение производительности с помощью автоматического кэширования настроек. Вы можете выбрать между файлом или redis или создать собственный драйвер кэша.
Поддержка очередей: обрабатывать настройки обновлений и удалений в фоновом режиме, обеспечивая плавные пользовательские впечатления.
Триггеры события: ответ на настройку изменений в режиме реального времени, используя события Laravel.
Глобальная вспомогательная функция и фасад: доступ и манипуляция настройками в любом месте вашего приложения Laravel с простой функцией настройки или настройкой фасада (даже в файлах конфигурации).
И многое другое!
Этот пакет предназначен для разработчиков, которые ищут эффективный и интуитивно понятный способ обработки настроек приложения. Он предлагает необходимые инструменты, сохраняя при этом процесс простым и обслуживаемым.
GitHub
GitHub - sajadsdi/laravel-setting-pro: Easy setting management for Laravel framework
Easy setting management for Laravel framework. Contribute to sajadsdi/laravel-setting-pro development by creating an account on GitHub.
🥱6👍4❤1🌚1
Куда делась 6 версия PHP?
Официально, версия PHP 6 была отменена из-за серьезных проблем и препятствий во время разработки. PHP 6 должен был представлять новую функциональность, включая поддержку Unicode и новый движок для работы с строками. Однако разработка PHP 6 столкнулась с техническими и организационными трудностями, вызванными внесением изменений в код базового ядра, которые затронули большую часть существующих библиотек и приложений.
11 марта 2010 команда разработчиков приняла решение об отмене выпуска PHP 6 в текущем его виде. В результате транк с PHP 6 был перенесён в бранч, а в транке образовалась новая версия — 5.4, в которую разработчики перенесли все наработки из PHP 6, кроме юникода.
#вопросы_с_собеседований
Официально, версия PHP 6 была отменена из-за серьезных проблем и препятствий во время разработки. PHP 6 должен был представлять новую функциональность, включая поддержку Unicode и новый движок для работы с строками. Однако разработка PHP 6 столкнулась с техническими и организационными трудностями, вызванными внесением изменений в код базового ядра, которые затронули большую часть существующих библиотек и приложений.
11 марта 2010 команда разработчиков приняла решение об отмене выпуска PHP 6 в текущем его виде. В результате транк с PHP 6 был перенесён в бранч, а в транке образовалась новая версия — 5.4, в которую разработчики перенесли все наработки из PHP 6, кроме юникода.
#вопросы_с_собеседований
👍8
🕹️ Композиция против Наследования:
Проводится аналогия между тем, как в Тетрисе составляются фигуры, чтобы создать линии, и тем, как объекты комбинируются в разработке программного обеспечения.
Объясняется, как композиция способствует гибкости и модульности, в то время как наследование может привести к Проблеме Хрупкого Базового Класса и сильной связанности.
🔧 Принцип Одной Ответственности (SRP):
В статье подчеркивается важность SRP в создании меньших, поддерживаемых единиц кода.
Утверждается, что разделение кода не должно зависеть исключительно от композиции, а скорее от соблюдения SRP, что делает код более переиспользуемым и поддерживаемым.
💉 Внедрение Зависимостей:
Вместо использования наследования для переиспользования кода предлагается использовать внедрение зависимостей и композицию.
Используя композицию, разработчики могут сократить влияние изменений и избежать Проблемы Хрупкого Базового Класса.
🌟 Принципы SOLID:
Тут также кратко затрагиваются принципы SOLID, упоминая Принцип Одной Ответственности и Внедрение Зависимостей, и намекают на то, что они будут рассмотрены более подробно в будущем контенте.
👀 Взгляд на Наследование:
Хотя здесь советуют предпочитать композицию перед наследованием по причинам, упомянутым выше, она также признает, что не все наследование плохо.
Разработчики должны учитывать, когда наследование может быть уместным, и предоставляет точку зрения Матиаса Верраса на определение эвристик для его использования.
Проводится аналогия между тем, как в Тетрисе составляются фигуры, чтобы создать линии, и тем, как объекты комбинируются в разработке программного обеспечения.
Объясняется, как композиция способствует гибкости и модульности, в то время как наследование может привести к Проблеме Хрупкого Базового Класса и сильной связанности.
🔧 Принцип Одной Ответственности (SRP):
В статье подчеркивается важность SRP в создании меньших, поддерживаемых единиц кода.
Утверждается, что разделение кода не должно зависеть исключительно от композиции, а скорее от соблюдения SRP, что делает код более переиспользуемым и поддерживаемым.
💉 Внедрение Зависимостей:
Вместо использования наследования для переиспользования кода предлагается использовать внедрение зависимостей и композицию.
Используя композицию, разработчики могут сократить влияние изменений и избежать Проблемы Хрупкого Базового Класса.
🌟 Принципы SOLID:
Тут также кратко затрагиваются принципы SOLID, упоминая Принцип Одной Ответственности и Внедрение Зависимостей, и намекают на то, что они будут рассмотрены более подробно в будущем контенте.
👀 Взгляд на Наследование:
Хотя здесь советуют предпочитать композицию перед наследованием по причинам, упомянутым выше, она также признает, что не все наследование плохо.
Разработчики должны учитывать, когда наследование может быть уместным, и предоставляет точку зрения Матиаса Верраса на определение эвристик для его использования.
Andrew Cairns
Composition over Inheritance
A lot can be learned about software development by playing retro games.
👍3❤1