Laravel SoftDelete: Избегание проблемы уникальных ограничений
Если вы уже давно используете Laravel, особенно когда проекты связаны с целостностью данных, то, скорее всего, вы уже сталкивались с функцией SoftDelete. Это довольно полезная функция, поскольку вы можете «удалять» записи, не удаляя их из базы данных. Laravel просто добавляет временную метку deleted_at, так что запись помечается как удаленная, но остается в системе.
Если вы уже давно используете Laravel, особенно когда проекты связаны с целостностью данных, то, скорее всего, вы уже сталкивались с функцией SoftDelete. Это довольно полезная функция, поскольку вы можете «удалять» записи, не удаляя их из базы данных. Laravel просто добавляет временную метку deleted_at, так что запись помечается как удаленная, но остается в системе.
DEV Community
Laravel SoftDelete: Avoiding the Unique Constraint Problem
This article originated from...
👍3🤔2👾1
#хочу_спросить
Задавайте любые вопросы о программировании и получайте ответы от пользователей. В комментариях под постом укажите #язык, #стек и/или #библиотеку, по которым задаете вопрос.
Задавайте любые вопросы о программировании и получайте ответы от пользователей. В комментариях под постом укажите #язык, #стек и/или #библиотеку, по которым задаете вопрос.
🔥3😁1
Самые полезные каналы для программистов в одной подборке!
Сохраняйте себе, чтобы не потерять 💾
🔥Для всех
Библиотека программиста — новости, статьи, досуг, фундаментальные темы
Книги для программистов
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 запрещена на территории РФ
Сохраняйте себе, чтобы не потерять 💾
🔥Для всех
Библиотека программиста — новости, статьи, досуг, фундаментальные темы
Книги для программистов
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 запрещена на территории РФ
🔥2
Tiny File Manager
Однофайловое PHP-приложение для хранения, загрузки, редактирования и управления файлами и папками в режиме онлайн через веб-браузер. Приложение работает на PHP 5.5+, позволяет создавать несколько пользователей и каждый пользователь может иметь свою собственную директорию, встроенная поддержка управления текстовыми файлами с помощью cloud9 IDE и поддерживает подсветку синтаксиса для более чем 150+ языков и более 35+ тем.
Однофайловое PHP-приложение для хранения, загрузки, редактирования и управления файлами и папками в режиме онлайн через веб-браузер. Приложение работает на PHP 5.5+, позволяет создавать несколько пользователей и каждый пользователь может иметь свою собственную директорию, встроенная поддержка управления текстовыми файлами с помощью cloud9 IDE и поддерживает подсветку синтаксиса для более чем 150+ языков и более 35+ тем.
GitHub
GitHub - prasathmani/tinyfilemanager: Single-file PHP file manager, browser and manage your files efficiently and easily with tinyfilemanager
Single-file PHP file manager, browser and manage your files efficiently and easily with tinyfilemanager - prasathmani/tinyfilemanager
Что такое межсайтовый скриптинг?
Межсайтовый скриптинг (XSS) — это вид атаки на веб-приложения, при котором злоумышленник внедряет вредоносный скрипт (обычно JavaScript) в веб-страницу или веб-приложение, которое затем выполняется в браузере других пользователей. Целью атаки является получение доступа к информации пользователя, управление сессией, или выполнение других вредоносных действий от имени пользователя, часто без его ведома.
Существуют два основных типа межсайтового скриптинга:
Хранимый (Stored) XSS: Злоумышленник вводит вредоносный скрипт непосредственно на сервере, обычно через поля ввода или комментарии на веб-сайте. Затем этот скрипт сохраняется на сервере и выполняется при просмотре страницы другими пользователями.
Рефлектированный (Reflected) XSS: Вредоносный скрипт передается на сервер через параметры URL, формы или другие входные данные. Затем сервер возвращает этот скрипт в браузер пользователя, где он выполняется. Например, злоумышленник может создать ссылку, содержащую вредоносный скрипт, и убедить пользователя перейти по этой ссылке.
Межсайтовый скриптинг может быть использован для кражи сессий, перенаправления на фишинговые сайты, введения пользователя в заблуждение, кражи конфиденциальных данных и многих других атак. Для защиты от XSS атак следует использовать соответствующие техники санитизации входных данных, контекстного экранирования и использования Content Security Policy (CSP).
#вопросы_с_собеседований
Межсайтовый скриптинг (XSS) — это вид атаки на веб-приложения, при котором злоумышленник внедряет вредоносный скрипт (обычно JavaScript) в веб-страницу или веб-приложение, которое затем выполняется в браузере других пользователей. Целью атаки является получение доступа к информации пользователя, управление сессией, или выполнение других вредоносных действий от имени пользователя, часто без его ведома.
Существуют два основных типа межсайтового скриптинга:
Хранимый (Stored) XSS: Злоумышленник вводит вредоносный скрипт непосредственно на сервере, обычно через поля ввода или комментарии на веб-сайте. Затем этот скрипт сохраняется на сервере и выполняется при просмотре страницы другими пользователями.
Рефлектированный (Reflected) XSS: Вредоносный скрипт передается на сервер через параметры URL, формы или другие входные данные. Затем сервер возвращает этот скрипт в браузер пользователя, где он выполняется. Например, злоумышленник может создать ссылку, содержащую вредоносный скрипт, и убедить пользователя перейти по этой ссылке.
Межсайтовый скриптинг может быть использован для кражи сессий, перенаправления на фишинговые сайты, введения пользователя в заблуждение, кражи конфиденциальных данных и многих других атак. Для защиты от XSS атак следует использовать соответствующие техники санитизации входных данных, контекстного экранирования и использования Content Security Policy (CSP).
#вопросы_с_собеседований
🥰5😢1
Нормализация фантазийного текста в обычный текст в Laravel
Статья посвящена проблеме обработки «фантазийного текста» (fancy text) — текста, вводимого пользователями в различных стилях и форматах, таких как символы Unicode, диакритические знаки, лигатуры и другие визуально нестандартные элементы, включая математические символы алфавита. Эти вариации текста могут вызвать проблемы с консистентностью данных, поисковой функцией и общей производительностью системы. Примером такой проблемы является то, что PHP не может корректно кодировать деформированные символы UTF-8 в JSON, что может привести к повреждению данных или сбоям.
Решение проблемы заключается в использовании функции нормализации текста в PHP, которая преобразует такие «фантазийные» символы в обычный текст. В статье предложен пример кода, использующий класс Normalizer из расширения PHP Internationalization (intl). Функция проверяет, нормализован ли текст в одном из нескольких возможных форматов (NFC, NFD, NFKC, NFKD и т.д.), и, если нет, нормализует его до соответствующего формата. Таким образом, можно обеспечить корректную обработку текста, сравнение и хранение данных.
Статья посвящена проблеме обработки «фантазийного текста» (fancy text) — текста, вводимого пользователями в различных стилях и форматах, таких как символы Unicode, диакритические знаки, лигатуры и другие визуально нестандартные элементы, включая математические символы алфавита. Эти вариации текста могут вызвать проблемы с консистентностью данных, поисковой функцией и общей производительностью системы. Примером такой проблемы является то, что PHP не может корректно кодировать деформированные символы UTF-8 в JSON, что может привести к повреждению данных или сбоям.
Решение проблемы заключается в использовании функции нормализации текста в PHP, которая преобразует такие «фантазийные» символы в обычный текст. В статье предложен пример кода, использующий класс Normalizer из расширения PHP Internationalization (intl). Функция проверяет, нормализован ли текст в одном из нескольких возможных форматов (NFC, NFD, NFKC, NFKD и т.д.), и, если нет, нормализует его до соответствующего формата. Таким образом, можно обеспечить корректную обработку текста, сравнение и хранение данных.
DEV Community
Normalizing Fancy Text to Normal Text in Laravel
Article originated from...
😁10❤2
Forwarded from Библиотека питониста | Python, Django, Flask
🔤 Код без боли: шрифты, которые спасут твои глаза
Если ты всё ещё не нашел идеальный шрифт для работы, эта статья может спасти твоё зрение.
Рассказываем:
▪️как настроить шрифт в Visual Studio Code;
▪️что такое лигатуры шрифтов;
▪️какие шрифты для программирования популярны.
👉 Читать обо всём здесь
Если ты всё ещё не нашел идеальный шрифт для работы, эта статья может спасти твоё зрение.
Рассказываем:
▪️как настроить шрифт в Visual Studio Code;
▪️что такое лигатуры шрифтов;
▪️какие шрифты для программирования популярны.
👉 Читать обо всём здесь
👍3
Если бы у вас была возможность лично выбрать одну новую фишку, которая появится в следующей версии языка, что бы это было?⬇️⬇️⬇️
📨 Как работают очереди и брокеры сообщений
Очередь сообщений — структура данных, которая хранит сообщения в порядке FIFO. Представьте, что вашему приложению нужно обрабатывать файлы, которые загружают пользователи. Очередь сообщений в этом случае может выступать как очередь задач, обрабатывающая задания асинхронно:
1️⃣ Пользователь загружает большой файл для обработки.
2️⃣ Веб-сервер принимает файл и создает задание.
3️⃣ Задание добавляется в очередь задач, а файл загружается в объектное хранилище.
4️⃣ Позже рабочий процесс забирает задания из очереди одно за другим и обрабатывает их, получая файл из хранилища.
Это самый простой пример. Очереди сообщений можно использовать для:
✔️ Планирования и управления фоновыми задачами.
✔️ Распределения задач между несколькими рабочими процессами.
✔️ Управления сервисами подписки и уведомлений.
✔️ Буферизации данных.
✔️ Повторных попыток обработки платежей и многого другого.
Подробнее читайте в нашем гайде 👇
🔗 Читать статью
🔗 Зеркало
Очередь сообщений — структура данных, которая хранит сообщения в порядке FIFO. Представьте, что вашему приложению нужно обрабатывать файлы, которые загружают пользователи. Очередь сообщений в этом случае может выступать как очередь задач, обрабатывающая задания асинхронно:
1️⃣ Пользователь загружает большой файл для обработки.
2️⃣ Веб-сервер принимает файл и создает задание.
3️⃣ Задание добавляется в очередь задач, а файл загружается в объектное хранилище.
4️⃣ Позже рабочий процесс забирает задания из очереди одно за другим и обрабатывает их, получая файл из хранилища.
Это самый простой пример. Очереди сообщений можно использовать для:
✔️ Планирования и управления фоновыми задачами.
✔️ Распределения задач между несколькими рабочими процессами.
✔️ Управления сервисами подписки и уведомлений.
✔️ Буферизации данных.
✔️ Повторных попыток обработки платежей и многого другого.
Подробнее читайте в нашем гайде 👇
🔗 Читать статью
🔗 Зеркало
👏3❤1👍1
#дайджест новостей по 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 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 года.
👍2
Понимание разницы между pluck() и select() в Laravel 11
В Laravel для работы с данными широко используются методы pluck() и select(). Несмотря на внешнее сходство, они выполняют разные задачи.
Основные различия между pluck() и select()
✔️Назначение:
pluck() используется для извлечения одного атрибута или пары ключ-значение.
select() позволяет получить несколько атрибутов для каждого элемента коллекции.
✔️Возвращаемая структура:
pluck() возвращает плоский массив значений или ассоциативный массив при использовании второго ключа.
select() возвращает коллекцию массивов с выбранными ключами.
Когда использовать каждый метод?
pluck() подходит, если требуется извлечь значения одного ключа или работать с вложенными данными.
select() лучше использовать, когда нужно получить несколько полей из каждого элемента коллекции.
В Laravel для работы с данными широко используются методы pluck() и select(). Несмотря на внешнее сходство, они выполняют разные задачи.
Основные различия между pluck() и select()
✔️Назначение:
pluck() используется для извлечения одного атрибута или пары ключ-значение.
select() позволяет получить несколько атрибутов для каждого элемента коллекции.
✔️Возвращаемая структура:
pluck() возвращает плоский массив значений или ассоциативный массив при использовании второго ключа.
select() возвращает коллекцию массивов с выбранными ключами.
Когда использовать каждый метод?
pluck() подходит, если требуется извлечь значения одного ключа или работать с вложенными данными.
select() лучше использовать, когда нужно получить несколько полей из каждого элемента коллекции.
DEV Community
Understanding the Difference Between pluck() and select() in Laravel 11
Laravel, one of the most popular PHP frameworks, provides a range of powerful methods for data...
🔥6🥱6👾1
Переход на Go глазами PHP-разработчика: 5 подводных камней
Автор — опытный PHP-разработчик, перешедший на Go. Он решил поделиться, с чем столкнулся во время этого перехода он и его коллеги.
Автор — опытный PHP-разработчик, перешедший на Go. Он решил поделиться, с чем столкнулся во время этого перехода он и его коллеги.
Хабр
Переход на Go глазами PHP-разработчика: 5 подводных камней
Хабр, привет! Меня зовут Костя Козин, я старший PHP-разработчик Lamoda Tech. За 17 лет в коммерческой разработке я писал на JS, PHP, и теперь на Golang. Сегодня в Lamoda Tech мы учим PHP-разработчиков...
🥱12👍8🔥3
Расскажите о шаблонах GRASP.
Шаблоны GRASP (General Responsibility Assignment Software Patterns) — это набор принципов проектирования объектно-ориентированного кода, которые помогают определить, какие классы или объекты будут выполнять конкретные задачи и ответственности. Они помогают улучшить структуру кода, делая его более гибким, читаемым и поддерживаемым.
Ниже представлены основные шаблоны GRASP:
1. Expert (Эксперт) — данный шаблон назначает ответственность объекту, который обладает наиболее полной информацией для выполнения определенной задачи. Таким образом, эксперт в данном контексте является наиболее квалифицированным объектом для выполнения определенной операции.
2. Creator (Создатель) — данный шаблон определяет, что объект должен быть ответственным за создание других объектов. То есть, если объект А тесно связан с объектом В и может быть считаться его создателем инициализации, то объект А должен брать на себя ответственность за создание объекта В.
3. Controller (Контроллер) — данный шаблон назначает объекту ответственность контроля за интерфейсом пользователя и управления потоком данных. Контроллер обрабатывает пользовательский ввод и инициирует действия в системе.
4. Low Coupling (Низкая связанность) — данный шаблон подразумевает, что объект должен иметь наименьшую возможную зависимость от других объектов. Это достигается путем использования абстракций и интерфейсов, чтобы объекты могли взаимодействовать, не зная подробности друг о друге.
5. High Cohesion (Высокая связность) — данный шаблон подразумевает, что каждый класс должен представлять собой логическую единицу функциональности. Класс должен иметь одну ответственность и хорошо определенный смысл.
6. Indirection (Индиректирование) — данный шаблон назначает объекту посредническую роль для связи между другими объектами. То есть, объект А не обращается напрямую к объекту В, а связь между ними возникает через объект-посредник.
7. Polymorphism (Полиморфизм) — данный шаблон направлен на использование полиморфизма в объектно-ориентированном программировании. Полиморфизм позволяет работать с разными типами объектов через один и тот же интерфейс, что делает систему более гибкой и расширяемой.
#вопросы_с_собеседований
Шаблоны GRASP (General Responsibility Assignment Software Patterns) — это набор принципов проектирования объектно-ориентированного кода, которые помогают определить, какие классы или объекты будут выполнять конкретные задачи и ответственности. Они помогают улучшить структуру кода, делая его более гибким, читаемым и поддерживаемым.
Ниже представлены основные шаблоны GRASP:
1. Expert (Эксперт) — данный шаблон назначает ответственность объекту, который обладает наиболее полной информацией для выполнения определенной задачи. Таким образом, эксперт в данном контексте является наиболее квалифицированным объектом для выполнения определенной операции.
2. Creator (Создатель) — данный шаблон определяет, что объект должен быть ответственным за создание других объектов. То есть, если объект А тесно связан с объектом В и может быть считаться его создателем инициализации, то объект А должен брать на себя ответственность за создание объекта В.
3. Controller (Контроллер) — данный шаблон назначает объекту ответственность контроля за интерфейсом пользователя и управления потоком данных. Контроллер обрабатывает пользовательский ввод и инициирует действия в системе.
4. Low Coupling (Низкая связанность) — данный шаблон подразумевает, что объект должен иметь наименьшую возможную зависимость от других объектов. Это достигается путем использования абстракций и интерфейсов, чтобы объекты могли взаимодействовать, не зная подробности друг о друге.
5. High Cohesion (Высокая связность) — данный шаблон подразумевает, что каждый класс должен представлять собой логическую единицу функциональности. Класс должен иметь одну ответственность и хорошо определенный смысл.
6. Indirection (Индиректирование) — данный шаблон назначает объекту посредническую роль для связи между другими объектами. То есть, объект А не обращается напрямую к объекту В, а связь между ними возникает через объект-посредник.
7. Polymorphism (Полиморфизм) — данный шаблон направлен на использование полиморфизма в объектно-ориентированном программировании. Полиморфизм позволяет работать с разными типами объектов через один и тот же интерфейс, что делает систему более гибкой и расширяемой.
#вопросы_с_собеседований
👍9❤2
Распространенные ошибки PHP: Решение часто встречающихся проблем
Некоторые ошибки просты и легко устранимы, но другие могут быть немного сложнее. Здесь рассказано про некоторые из наиболее распространенных ошибок и предложены решения, которые помогут вам быстро их устранить.
Некоторые ошибки просты и легко устранимы, но другие могут быть немного сложнее. Здесь рассказано про некоторые из наиболее распространенных ошибок и предложены решения, которые помогут вам быстро их устранить.
DEV Community
Common PHP Errors: Solutions to Frequently Encountered Issues
PHP is a powerful scripting language widely used for web development, but like any language, it's...
🥱7👍4👏1🌚1
🧑💻 Статьи для IT: как объяснять и распространять значимые идеи
Напоминаем, что у нас есть бесплатный курс для всех, кто хочет научиться интересно писать — о программировании и в целом.
Что: семь модулей, посвященных написанию, редактированию, иллюстрированию и распространению публикаций.
Для кого: для авторов, копирайтеров и просто программистов, которые хотят научиться интересно рассказывать о своих проектах.
👉Материалы регулярно дополняются, обновляются и корректируются. А еще мы отвечаем на все учебные вопросы в комментариях курса.
Напоминаем, что у нас есть бесплатный курс для всех, кто хочет научиться интересно писать — о программировании и в целом.
Что: семь модулей, посвященных написанию, редактированию, иллюстрированию и распространению публикаций.
Для кого: для авторов, копирайтеров и просто программистов, которые хотят научиться интересно рассказывать о своих проектах.
👉Материалы регулярно дополняются, обновляются и корректируются. А еще мы отвечаем на все учебные вопросы в комментариях курса.
👍3