PHP | Вопросы собесов
Відкрити в Telegram
Сайт: https://easyoffer.ru/ Все каналы: t.me/+xGeAw6ckJ4liYzQy Контакт для рекламы: @easyoffer_adv
Показати більше2 326
Підписники
Немає даних24 години
-17 днів
-930 днів
Архів дописів
\"); \n// Выведет: <script>alert('Hacked!')</script>\n\nСтавь 👍 и забирай 📚 Базу знаний","datePublished":"2026-09-10T09:05:31Z","dateModified":"2026-09-10T09:05:31Z","author":{"@type":"Organization","name":"PHP | Вопросы собесов","url":"https://telemetr.io/uk/channels/1905887817-easy_php_ru","image":"https://img.tlmtr.io/c/24YUu5/5224322902764150052?ty=x"},"publisher":{"@type":"Organization","name":"PHP | Вопросы собесов","url":"https://telemetr.io/uk/channels/1905887817-easy_php_ru","image":"https://img.tlmtr.io/c/24YUu5/5224322902764150052?ty=x"},"commentCount":0,"interactionStatistic":[{"@type":"InteractionCounter","interactionType":"https://schema.org/ViewAction","userInteractionCount":270},{"@type":"InteractionCounter","interactionType":"https://schema.org/ShareAction","userInteractionCount":2}]}},{"@type":"ListItem","position":20,"item":{"@type":"SocialMediaPosting","@id":"https://telemetr.io/uk/channels/1905887817-easy_php_ru/posts/2373","url":"https://telemetr.io/uk/channels/1905887817-easy_php_ru/posts/2373","mainEntityOfPage":"https://telemetr.io/uk/channels/1905887817-easy_php_ru/posts/2373","headline":"🤔 Зачем нужны паттерны проектирования? Это повторяемые решения типичных задач. Они помогают разработчикам соз…","articleBody":"🤔 Зачем нужны паттерны проектирования?\n\nЭто повторяемые решения типичных задач. Они помогают разработчикам создавать программы, которые легко поддерживать, расширять и модифицировать. Паттерны проектирования упрощают процесс разработки, обеспечивая проверенные способы решения распространенных проблем, что экономит время и силы разработчиков.\n\n🚩Зачем они нужны\n\n🟠Повторяемость и стандартность\nПаттерны обеспечивают повторяемость решений для часто возникающих задач, что снижает вероятность ошибок и улучшает читабельность кода.\n🟠Улучшение коммуникации\nИспользование общепринятых паттернов облегчает коммуникацию между разработчиками. Когда все понимают, что подразумевается под, например, «одиночкой» (singleton), это упрощает обсуждение архитектуры системы.\n🟠Повышение качества кода\nПаттерны проектирования способствуют созданию более структурированного, гибкого и поддерживаемого кода.\n🟠Экономия времени и ресурсов\nПаттерны позволяют не изобретать велосипед, а использовать проверенные решения, что ускоряет процесс разработки.\n\n🚩Как они используются\n\nПаттерны проектирования делятся на несколько категорий, каждая из которых решает определенный тип задач:\n🟠Порождающие паттерны\nЭти паттерны касаются создания объектов. Примеры: Singleton, Factory, Builder.\n🟠Структурные паттерны\nЭти паттерны касаются построения структуры больших объектов. Примеры: Adapter, Composite, Decorator.\n🟠Поведенческие паттерны\nЭти паттерны касаются взаимодействия и распределения обязанностей между объектами. Примеры: Observer, Strategy, Command.\nclass Singleton {\n private static $instance;\n\n private function __construct() {\n // Закрытый конструктор предотвращает создание объекта через new\n }\n\n public static function getInstance() {\n if (self::$instance === null) {\n self::$instance = new self();\n }\n return self::$instance;\n }\n\n public function someBusinessLogic() {\n // Некоторая бизнес-логика\n }\n}\n\n// Использование Singleton\n$singleton = Singleton::getInstance();\n$singleton->someBusinessLogic();\n\nСтавь 👍 и забирай 📚 Базу знаний","datePublished":"2026-09-09T09:05:41Z","dateModified":"2026-09-09T09:05:41Z","author":{"@type":"Organization","name":"PHP | Вопросы собесов","url":"https://telemetr.io/uk/channels/1905887817-easy_php_ru","image":"https://img.tlmtr.io/c/24YUu5/5224322902764150052?ty=x"},"publisher":{"@type":"Organization","name":"PHP | Вопросы собесов","url":"https://telemetr.io/uk/channels/1905887817-easy_php_ru","image":"https://img.tlmtr.io/c/24YUu5/5224322902764150052?ty=x"},"commentCount":0,"interactionStatistic":[{"@type":"InteractionCounter","interactionType":"https://schema.org/ViewAction","userInteractionCount":263},{"@type":"InteractionCounter","interactionType":"https://schema.org/LikeAction","userInteractionCount":1},{"@type":"InteractionCounter","interactionType":"https://schema.org/ShareAction","userInteractionCount":4}]}}]}




+5
🤔 Для чего нужно пространство имен в PHP?
Пространства имён (
namespace) в PHP используются для разделения кода и предотвращения конфликтов имён классов, функций и констант.
🚩Почему нужны `namespace`?
Избегают конфликтов имён (если два разных файла объявляют одинаковые классы).
Упрощают организацию кода (структура похожа на файловую систему).
Работают с автозагрузкой (PSR-4) – Composer использует namespace для загрузки файлов.
🚩Пример использования `namespace`
Без пространства имён – конфликт классов
// Файл: models/User.php
class User {
public function getRole() {
return "Пользователь";
}
}
// Файл: controllers/User.php
class User {
public function getRole() {
return "Администратор";
}
}
// Ошибка! PHP не знает, какой User использовать.
$user = new User();
С namespace – классы разделены
// Файл: models/User.php
namespace App\Models;
class User {
public function getRole() {
return "Пользователь";
}
}
// Файл: controllers/User.php
namespace App\Controllers;
class User {
public function getRole() {
return "Администратор";
}
}
// Используем классы с указанием namespace
$modelUser = new App\Models\User();
echo $modelUser->getRole(); // ✅ "Пользователь"
$controllerUser = new App\Controllers\User();
echo $controllerUser->getRole(); // ✅ "Администратор"
🟠Импорт (`use`) – сокращает длинные пути
Вместо длинных App\Models\User, можно импортировать
use App\Models\User;
$user = new User(); // PHP понимает, что это App\Models\User
🟠Работа с функциями и константами
Пространства имён работают не только с классами, но и с функциями и константами.
namespace Utils;
function hello() {
return "Привет!";
}
echo hello(); // ✅ "Привет!"
echo \Utils\hello(); // ✅ "Привет!" (полный путь)
Ставь 👍 и забирай 📚 Базу знанийКорпоративный мессенджер Element на вашем сервере
💻Устали от рисков блокировок софта и хаоса в рабочих чатах сотрудников?
Если ваша команда общается в Telegram или зарубежных SaaS-сервисах, вы не контролируете доступы. При увольнении сотрудника приходится вручную удалять его из десятков групп, а риск внешних ограничений платформы растет каждый день.
ИТ-интегратор «IT Liga» развернет автономную платформу Element на вашей инфраструктуре.
Порядок в ИТ-контуре бизнеса:
✅ Защита от блокировок — сервер принадлежит только вам. ✅ Удаление уволенного сотрудника из всех чатов за 1 клик через AD/SSO.
✅ Мосты с Telegram — общайтесь с клиентами прямо из защищенного Element.
✅ Встроенный ИИ без передачи данных на внешние сервера.
Переведите команду на стабильный софт. Получите демо за 20 минут!
Узнать больше
#реклама 16+
element.itliga.ru
О рекламодателе
🤔 Что известно про наследование?
Это механизм объектно-ориентированного программирования, позволяющий создавать классы на основе других классов. Позволяет повторно использовать код, добавлять или переопределять функциональность.
Ставь 👍 если знал ответ, 🔥 если нет
Забирай 📚 Базу знаний
🤔 Расскажи про полиморфизм
Полиморфизм — это одна из ключевых концепций ООП (объектно-ориентированного программирования), которая позволяет объектам разного типа использовать один и тот же интерфейс. Это значит, что один метод может работать с разными типами данных, но при этом давать корректный результат.
🚩Зачем нужен полиморфизм?
🟠Гибкость кода
можно легко заменять одни классы другими, не меняя общий код.
🟠Упрощение поддержки
код становится понятнее и легче для расширения.
🟠Сокращение дублирования
один общий интерфейс может использоваться разными классами.
🚩Виды полиморфизма
Полиморфизм через наследование (override, переопределение методов)
Полиморфизм через интерфейсы (реализация одного интерфейса разными классами)
🚩Полиморфизм через наследование
Допустим, у нас есть базовый класс
Animal, у которого есть метод makeSound(). Разные животные будут издавать разные звуки, но все они будут использовать этот метод.
class Animal {
public function makeSound() {
return "Some sound";
}
}
class Dog extends Animal {
public function makeSound() {
return "Woof!";
}
}
class Cat extends Animal {
public function makeSound() {
return "Meow!";
}
}
function printSound(Animal $animal) {
echo $animal->makeSound() . PHP_EOL;
}
printSound(new Dog()); // Выведет "Woof!"
printSound(new Cat()); // Выведет "Meow!"
🚩Полиморфизм через интерфейсы
Иногда классы не связаны через наследование, но должны поддерживать общий метод. Для этого используется интерфейс:
interface Shape {
public function getArea(): float;
}
class Circle implements Shape {
private $radius;
public function __construct($radius) {
$this->radius = $radius;
}
public function getArea(): float {
return pi() * $this->radius * $this->radius;
}
}
class Rectangle implements Shape {
private $width, $height;
public function __construct($width, $height) {
$this->width = $width;
$this->height = $height;
}
public function getArea(): float {
return $this->width * $this->height;
}
}
function printArea(Shape $shape) {
echo "Площадь: " . $shape->getArea() . PHP_EOL;
}
printArea(new Circle(5)); // Выведет площадь круга
printArea(new Rectangle(4, 6)); // Выведет площадь прямоугольника
Ставь 👍 и забирай 📚 Базу знанийАренда VPS/VDS-сервера.
Виртуальные выделенные серверы в дата-центрах уровня Tier III — 7 готовых конфигураций от 200 ₽/мес.
Преимущества аренды:
- Выделенные ресурсы без переплаты;
- KVM-виртуализация;
- Быстрые NVMe SSD;
- Бесплатная защита от DDoS;
- Управление через панель, API и Terraform;
- Техподдержка 24/7.
Запустите сервер за несколько минут!
Попробовать
#реклама 16+
selectel.ru
О рекламодателе
🤔 Чем HTTP первой версии отличается от второй?
HTTP/1.1 требует для каждого запроса нового соединения, что создает дополнительную нагрузку. HTTP/2 поддерживает мультиплексирование, позволяя передавать несколько запросов и ответов одновременно по одному соединению, что улучшает производительность.?
Ставь 👍 если знал ответ, 🔥 если нет
Забирай 📚 Базу знаний
🤔 Что такое extend?
В PHP
extends используется для наследования классов. Он позволяет одному классу (дочернему) наследовать свойства и методы другого класса (родительского).
🚩Пример наследования через `extends`
Базовый пример (extends)
class Animal {
public function makeSound() {
return "Какой-то звук";
}
}
class Dog extends Animal {
public function makeSound() {
return "Гав-гав!";
}
}
$dog = new Dog();
echo $dog->makeSound(); // ✅ "Гав-гав!"
Использование parent:: для вызова родительского метода
class Animal {
public function makeSound() {
return "Какой-то звук";
}
}
class Cat extends Animal {
public function makeSound() {
return parent::makeSound() . " Мяу-мяу!";
}
}
$cat = new Cat();
echo $cat->makeSound(); // ✅ "Какой-то звук Мяу-мяу!"
Наследование свойств
class User {
protected string $role = "Гость";
public function getRole() {
return $this->role;
}
}
class Admin extends User {
protected string $role = "Администратор";
}
$admin = new Admin();
echo $admin->getRole(); // ✅ "Администратор"
Ставь 👍 и забирай 📚 Базу знанийУслуги дата-центра в Москве
Размещение и аренда серверного оборудования в дата-центре.
👍 4 современных дата-центра в Москве.
👍 Лицензированный оператор связи.
👍 Индивидуальные конфигурации выделенных серверов под задачи клиента.
👍 Круглосуточная техническая поддержка в Телеграм, без ботов.
Узнать цену
#реклама 16+
itsoft.ru
О рекламодателе
🤔 Что такое SOLID?
SOLID — это набор из пяти принципов объектно-ориентированного проектирования, направленных на создание более устойчивого и поддерживаемого кода. Эти принципы включают: Single Responsibility (одна ответственность), Open/Closed (открытость для расширения, закрытость для изменений), Liskov Substitution (замещение Лисков), Interface Segregation (разделение интерфейсов) и Dependency Inversion (инверсия зависимостей). Применение SOLID помогает избежать чрезмерной сложности и делает код более гибким. Эти принципы часто используются для улучшения архитектуры приложений.
Ставь 👍 если знал ответ, 🔥 если нет
Забирай 📚 Базу знаний
🤔 Зачем придумали анонимные классы?
Анонимные классы в PHP были введены в версии 7.0 и позволяют создавать одноразовые объекты без необходимости предварительного объявления класса. Они имеют несколько преимуществ и предназначены для решения ряда задач в программировании. Вот основные причины и случаи, для которых они были придуманы:
🚩Зачем придумали анонимные классы
🟠Упрощение кода
Анонимные классы позволяют создать класс на месте, в том же файле, где он используется, без необходимости его предварительного определения. Это упрощает и сокращает код, особенно для одноразовых задач.
$logger = new class {
public function log($message) {
echo $message;
}
};
$logger->log("Hello, World!"); // Выведет: Hello, World!
🟠Инкапсуляция и уменьшение загрязнения пространства имен
Поскольку анонимные классы не имеют имен, они не добавляют новых имен в глобальное пространство имен, что помогает избежать конфликтов имен и делает код более чистым.
🟠Использование одноразовых объектов
Анонимные классы удобны, когда нужно создать объект для одноразового использования, например, в тестах, или для передачи в функции или методы.
function handleRequest($handler) {
$handler->process();
}
handleRequest(new class {
public function process() {
echo "Processing request";
}
}); // Выведет: Processing request
🟠Более гибкая реализация интерфейсов и абстрактных классов:
Анонимные классы могут реализовывать интерфейсы или наследовать от абстрактных классов, предоставляя быстрый способ создать конкретные реализации на месте.
interface Logger {
public function log($message);
}
$logger = new class implements Logger {
public function log($message) {
echo $message;
}
};
$logger->log("Logging message"); // Выведет: Logging message
🟠Улучшение тестирования
В юнит-тестах анонимные классы позволяют быстро создавать мок-объекты (mock objects) для тестирования без необходимости создавать отдельные классы для каждой тестовой ситуации.
class Service {
private $logger;
public function __construct($logger) {
$this->logger = $logger;
}
public function execute() {
$this->logger->log("Service executed");
}
}
$mockLogger = new class {
public function log($message) {
echo "Mock: " . $message;
}
};
$service = new Service($mockLogger);
$service->execute(); // Выведет: Mock: Service executed
Ставь 👍 и забирай 📚 Базу знанийРозыгрыш Яндекс Станции уже в боте
Любимые блогеры, розыгрыши, новости и анонсы в одном боте!
Узнать больше
#реклама 16+
refer.id
О рекламодателе
🤔 Что такое Docker?
Это платформа для разработки, доставки и запуска приложений в изолированных контейнерах. Она позволяет упаковывать приложения и все их зависимости в контейнеры, которые могут работать на любой системе, поддерживающей Docker, что делает приложения более переносимыми и независимыми от окружения.
🚩Основные концепции
🟠Контейнеры
Контейнеры — это легковесные, автономные, исполняемые пакеты, которые включают в себя все необходимое для запуска приложения: код, библиотеки, зависимости и системные инструменты. Контейнеры изолированы друг от друга и от хоста, что обеспечивает консистентность работы приложения в различных средах.
🟠Образы (Images)
Образ Docker — это неизменяемый шаблон, из которого создаются контейнеры. Образы могут базироваться на других образах и содержат все необходимое для запуска приложения. Например, образ может содержать операционную систему, веб-сервер и само приложение.
🟠Dockerfile
Dockerfile — это текстовый файл с инструкциями по созданию Docker-образа. Он содержит последовательность команд, которые Docker выполняет для сборки образа.
# Используем базовый образ
FROM php:8.0-apache
# Копируем локальные файлы в контейнер
COPY src/ /var/www/html/
# Устанавливаем зависимости
RUN docker-php-ext-install mysqli
🟠Docker Hub
Docker Hub — это облачный сервис для хранения и обмена Docker-образами. Он позволяет публиковать свои образы и загружать образы, созданные другими пользователями.
🚩Плюсы
➕Портативность
Контейнеры могут работать на любом сервере, где установлен Docker, что позволяет легко перемещать приложения между различными средами (разработка, тестирование, продакшн).
➕Изоляция
Контейнеры изолируют приложения и их зависимости, предотвращая конфликты между различными версиями библиотек и инструментов, используемых на одном сервере.
➕Легковесность
Контейнеры используют общие ресурсы ядра хостовой операционной системы, что делает их более легковесными по сравнению с виртуальными машинами.
➕Быстрое развертывание
Контейнеры можно запускать и останавливать за считанные секунды, что ускоряет процессы разработки, тестирования и развертывания приложений.
Ставь 👍 и забирай 📚 Базу знанийИщем менеджеров нейросетей, можно без опыта
Опыт не нужен. Только телефон. Занятость — 3-6 часов в день.
Нужно выполнять задачи с помощью нейросетей. Все это вы делаете из дома.
Всему обучим на бесплатном курсе и после поможем со стартом.
Что вас ждет за 3 дня:
✅ Уроки с практикой по 30 минут
✅ Домашние задания с проверкой и оплатой бонусами
✅ Выплата за каждую выполненную работу
🎓 Все, кто пройдет обучение, получат сертификат от школы с образовательной лицензией.
Набор закрывается, как только группа заполнится.
Чтобы занять место нажмите "Зарегистрироваться".
Зарегистрироваться
#реклама 16+
course.neurogansta.ru
О рекламодателе
🤔 Где можно столкнуться с динамической типизацией?
Динамическая типизация характерна для языков, таких как Python, JavaScript, PHP. Например, переменная может быть сначала числом, а затем строкой.
Ставь 👍 если знал ответ, 🔥 если нет
Забирай 📚 Базу знаний
Регистрируйтесь на Yandex Scale 2026
Главная конференция Yandex Cloud.
Узнайте о сервисах, которые меняют ваш бизнес.
4 офлайн-трека (AI, Infra + DevTools, Data, Security), онлайн-трек Deep Tech, воркшопы по ИИ и интерактивы. Подробнее о программе читайте в карточках🗒
📅24 сентября
🚗Москва + 💻онлайн
Участие бесплатное!
Зарегистрироваться
#реклама 16+
scale.yandex.cloud
О рекламодателе
🤔 Что такое Cookies в PHP?
Cookies (Куки) – это небольшие файлы, которые браузер сохраняет на компьютере пользователя и отправляет серверу при каждом запросе.
🚩Как работают Cookies?
Установка Cookie в PHP
setcookie("username", "Alice", time() + 3600, "/");
Чтение Cookie в PHP
echo $_COOKIE["username"]; // ✅ Alice
Удаление Cookie
setcookie("username", "", time() - 3600, "/");
🚩Где используются Cookies?
Авторизация (сохранение логина).
Запоминание настроек (тема, язык).
Корзина товаров (если нет сессий).
Отслеживание пользователей (Google Analytics, реклама).
🚩Ограничения и безопасность Cookies
Максимальный размер – 4KB (поэтому для больших данных лучше использовать SESSION).
Можно изменить в браузере (поэтому не храните пароли в куках!).
Уязвимость XSS → если сайт подвержен XSS-атакам, злоумышленник может украсть куки.
Защита Cookies
setcookie("secure_cookie", "value", time() + 3600, "/", "", true, true);
Ставь 👍 и забирай 📚 Базу знанийХочешь карьеру в ИТ? Начни с программы «Мини-СЕО»
⚡Попади в команду топ-менеджера Т-Банка и работай над стратегическими проектами компании.
В зависимости от трека ты сможешь:
— разрабатывать эффективные методологии для оценки влияния продукта на экосистему с Владимиром Любимовым;
— исследовать экосистемы и находить наиболее перспективные точки роста с Максимом Безруковым;
— развивать сегмент автолюбителей и заниматься региональной экспансией Т-Банка с Жорой Сукасяном;
— вести стратегический план развития 3P, развивать AI-продукты и искать, где AI может упростить работу команды, c Денисом Коротовым;
— участвовать в создании B2B-маркетплейса c Владимиром Абазовым.
Программа подойдет студентам и джуниор-специалистам, которые сильны в математике, аналитике и программировании. Успей подать заявку до 25 сентября!
Зарегистрироваться
#реклама 16+
t-miniceo.ru
О рекламодателе
🤔 Как устроен Git?
Это распределенная система контроля версий, работающая на основе графа коммитов и хранения изменений через хеши (SHA-1).
1. Объектная модель:
- Commit – снимок состояния проекта.
- Tree – каталог файлов в коммите.
- Blob – сами файлы (содержимое).
2. Система ссылок (HEAD, branches, tags).
3. Механизм staging (индексация изменений) перед коммитом.
4. Быстрая работа за счет хранения только изменений (deltas) и поддержки локального репозитория.
Ставь 👍 если знал ответ, 🔥 если нет
Забирай 📚 Базу знаний
🤔 Где мы делаем фильтрацию данных?
Фильтрацию данных в PHP можно делать в нескольких местах в зависимости от контекста. Основные области фильтрации:
🚩Фильтрация входных данных
Когда мы получаем данные от пользователя (
$_GET, $_POST, $_REQUEST), важно очищать их от нежелательных значений.
$name = filter_input(INPUT_POST, 'name', FILTER_SANITIZE_STRING);
$email = filter_input(INPUT_POST, 'email', FILTER_VALIDATE_EMAIL);
Фильтрация массива $_POST через filter_var_array()
$filters = [
'name' => FILTER_SANITIZE_STRING,
'email' => FILTER_VALIDATE_EMAIL,
'age' => FILTER_VALIDATE_INT
];
$filteredData = filter_var_array($_POST, $filters);
🚩Фильтрация перед сохранением в базу данных
Перед вставкой в SQL важно удалять потенциально опасные символы, чтобы избежать SQL-инъекций.
$db = new PDO("mysql:host=localhost;dbname=test", "root", "password");
$stmt = $db->prepare("INSERT INTO users (name, email) VALUES (:name, :email)");
$stmt->execute([
':name' => htmlspecialchars($_POST['name']),
':email' => $_POST['email']
]);
🚩Фильтрация данных внутри кода
Если данные поступают из разных источников, мы можем использовать фильтрующие функции PHP:
Очистка строки от HTML
$cleanText = strip_tags("<h1>Hello</h1>"); // "Hello"
Удаление пробелов
$trimmed = trim(" example "); // "example"
Приведение к числу
$number = filter_var("42abc", FILTER_SANITIZE_NUMBER_INT); // 42
🚩Фильтрация перед выводом (защита от XSS)
Перед выводом в браузер очищаем данные от HTML/JS-кода, чтобы злоумышленник не внедрил скрипты.
echo htmlspecialchars("<script>alert('Hacked!')</script>");
// Выведет: <script>alert('Hacked!')</script>
Ставь 👍 и забирай 📚 Базу знаний🤔 Зачем нужны паттерны проектирования?
Это повторяемые решения типичных задач. Они помогают разработчикам создавать программы, которые легко поддерживать, расширять и модифицировать. Паттерны проектирования упрощают процесс разработки, обеспечивая проверенные способы решения распространенных проблем, что экономит время и силы разработчиков.
🚩Зачем они нужны
🟠Повторяемость и стандартность
Паттерны обеспечивают повторяемость решений для часто возникающих задач, что снижает вероятность ошибок и улучшает читабельность кода.
🟠Улучшение коммуникации
Использование общепринятых паттернов облегчает коммуникацию между разработчиками. Когда все понимают, что подразумевается под, например, «одиночкой» (singleton), это упрощает обсуждение архитектуры системы.
🟠Повышение качества кода
Паттерны проектирования способствуют созданию более структурированного, гибкого и поддерживаемого кода.
🟠Экономия времени и ресурсов
Паттерны позволяют не изобретать велосипед, а использовать проверенные решения, что ускоряет процесс разработки.
🚩Как они используются
Паттерны проектирования делятся на несколько категорий, каждая из которых решает определенный тип задач:
🟠Порождающие паттерны
Эти паттерны касаются создания объектов. Примеры: Singleton, Factory, Builder.
🟠Структурные паттерны
Эти паттерны касаются построения структуры больших объектов. Примеры: Adapter, Composite, Decorator.
🟠Поведенческие паттерны
Эти паттерны касаются взаимодействия и распределения обязанностей между объектами. Примеры: Observer, Strategy, Command.
class Singleton {
private static $instance;
private function __construct() {
// Закрытый конструктор предотвращает создание объекта через new
}
public static function getInstance() {
if (self::$instance === null) {
self::$instance = new self();
}
return self::$instance;
}
public function someBusinessLogic() {
// Некоторая бизнес-логика
}
}
// Использование Singleton
$singleton = Singleton::getInstance();
$singleton->someBusinessLogic();
Ставь 👍 и забирай 📚 Базу знаний