Шаблоны проектирования PHP: Active Record
Active Record - это шаблон проектирования, который включает в себя класс с методами сохранения данных и бизнес-логики. Однако он нарушает принцип единственной ответственности, так как класс сочетает в себе множество обязанностей. Для решения этой проблемы предлагается создать родительский класс, который реализует методы сохранения данных универсальным способом.
✔️Этот подход называется Layer Supertype.
🔎Приведен пример работы с Active Record. В данном примере создается класс Product, который содержит методы для работы с продуктами в базе данных SQLite. Класс имеет статическое свойство conn для хранения соединения с базой данных и переменную data для хранения данных продукта.
Класс Product содержит методы для выполнения различных операций с базой данных, таких как поиск продукта по ID, выборка всех продуктов с возможностью фильтрации, удаление продукта и сохранение (включая добавление и обновление).
Приведенный код также включает примеры тестирования методов:
🟠INSERT
🟠UPDATE
🟠выборка всех продуктов из базы данных.
Active Record - это шаблон проектирования, который включает в себя класс с методами сохранения данных и бизнес-логики. Однако он нарушает принцип единственной ответственности, так как класс сочетает в себе множество обязанностей. Для решения этой проблемы предлагается создать родительский класс, который реализует методы сохранения данных универсальным способом.
✔️Этот подход называется Layer Supertype.
🔎Приведен пример работы с Active Record. В данном примере создается класс Product, который содержит методы для работы с продуктами в базе данных SQLite. Класс имеет статическое свойство conn для хранения соединения с базой данных и переменную data для хранения данных продукта.
Класс Product содержит методы для выполнения различных операций с базой данных, таких как поиск продукта по ID, выборка всех продуктов с возможностью фильтрации, удаление продукта и сохранение (включая добавление и обновление).
Приведенный код также включает примеры тестирования методов:
🟠INSERT
🟠UPDATE
🟠выборка всех продуктов из базы данных.
DEV Community
PHP Design Patterns: Active Record
What is Active Record? Active Record is a design pattern that features a class that has...
🥱7👍5
Forwarded from Библиотека программиста | программирование, кодинг, разработка
👨🎓Подборка бесплатных инструментов, курсов и ресурсов для освоения SQL и баз данных
✏️ Полный курс по базам данных НИУ ВШЭ, СПБПУ и центра CS, который познакомит с методами структурированного хранения данных, основами SQL, принципами использования баз данных в приложениях и многим другим
✏️ SQLBolt — серия интерактивных уроков и упражнений для изучения SQL прямо в браузере
✏️ PostgreSQL Tutorial — исчерпывающее пособие по PostgreSQL
✏️ The Internals of PostgreSQL — полезный ресурс для изучения внутреннего устройства PostgreSQL
✏️ DB-Engines — коллекция полезной информации о реляционных СУБД и NoSQL
✏️ SQLZoo — подборка учебных пособий как для новичков, так и для профи
✏️ SQL Tutorial — видеогайд по SQL от FreeCodeCamp
✏️ PopSQL — инструмент для совместного изучения SQL и выполнения SQL-запросов
✏️ Полный курс по базам данных НИУ ВШЭ, СПБПУ и центра CS, который познакомит с методами структурированного хранения данных, основами SQL, принципами использования баз данных в приложениях и многим другим
✏️ SQLBolt — серия интерактивных уроков и упражнений для изучения SQL прямо в браузере
✏️ PostgreSQL Tutorial — исчерпывающее пособие по PostgreSQL
✏️ The Internals of PostgreSQL — полезный ресурс для изучения внутреннего устройства PostgreSQL
✏️ DB-Engines — коллекция полезной информации о реляционных СУБД и NoSQL
✏️ SQLZoo — подборка учебных пособий как для новичков, так и для профи
✏️ SQL Tutorial — видеогайд по SQL от FreeCodeCamp
✏️ PopSQL — инструмент для совместного изучения SQL и выполнения SQL-запросов
👍9🔥2
Совет по безопасности: увеличьте количество проходов bcrypt
Статья обсуждает важность безопасности в веб-разработке, фокусируясь на механизме хеширования паролей. Она подчеркивает увеличение вычислительной мощности компьютеров и необходимость постоянного обновления методов хеширования для защиты от брутфорс-атак.
Здесь рассматриваются изменения, внесенные в Laravel, включая увеличение количества проходов bcrypt с 10 до 12. Это увеличение замедляет процесс хеширования, обеспечивая более высокий уровень безопасности.
Статья обсуждает важность безопасности в веб-разработке, фокусируясь на механизме хеширования паролей. Она подчеркивает увеличение вычислительной мощности компьютеров и необходимость постоянного обновления методов хеширования для защиты от брутфорс-атак.
Здесь рассматриваются изменения, внесенные в Laravel, включая увеличение количества проходов bcrypt с 10 до 12. Это увеличение замедляет процесс хеширования, обеспечивая более высокий уровень безопасности.
Хабр
Совет по безопасности: увеличьте количество проходов bcrypt
Приветствую! На этой неделе мы отправимся в интересный и сложный мир механизм хэширования паролей, и рассмотрим очень простое изменение, которое Вы должны сделать в своих приложениях для повышения...
👍2
🧑💻 Статьи для IT: как объяснять и распространять значимые идеи
Напоминаем, что у нас есть бесплатный курс для всех, кто хочет научиться интересно писать — о программировании и в целом.
Что: семь модулей, посвященных написанию, редактированию, иллюстрированию и распространению публикаций.
Для кого: для авторов, копирайтеров и просто программистов, которые хотят научиться интересно рассказывать о своих проектах.
👉Материалы регулярно дополняются, обновляются и корректируются. А еще мы отвечаем на все учебные вопросы в комментариях курса.
Напоминаем, что у нас есть бесплатный курс для всех, кто хочет научиться интересно писать — о программировании и в целом.
Что: семь модулей, посвященных написанию, редактированию, иллюстрированию и распространению публикаций.
Для кого: для авторов, копирайтеров и просто программистов, которые хотят научиться интересно рассказывать о своих проектах.
👉Материалы регулярно дополняются, обновляются и корректируются. А еще мы отвечаем на все учебные вопросы в комментариях курса.
👍2😁1
Использование Hashid с Laravel (вместо UUID)
Статья обсуждает различные методы создания идентификаторов в базах данных, сосредотачиваясь на сравнении увеличиваемых целочисленных идентификаторов с уникальными строковыми идентификаторами (UUIDs) и методом Hashid.
Автор исследует преимущества и недостатки каждого метода и предоставляет решение в виде использования Hashid - метода для генерации коротких и уникальных строковых идентификаторов из чисел.
В статье также рассматривается реализация Hashid в Laravel-приложении
Статья обсуждает различные методы создания идентификаторов в базах данных, сосредотачиваясь на сравнении увеличиваемых целочисленных идентификаторов с уникальными строковыми идентификаторами (UUIDs) и методом Hashid.
Автор исследует преимущества и недостатки каждого метода и предоставляет решение в виде использования Hashid - метода для генерации коротких и уникальных строковых идентификаторов из чисел.
В статье также рассматривается реализация Hashid в Laravel-приложении
👍4👾3🥱1
Forwarded from PHP jobs — вакансии по PHP, Symfony, Laravel
#дайджест #phpdevjob
Вакансии недели для джунов 👨🏻🏫
PHP-разработчик в NeoFamily
Санкт-Петербург. Онлайн-школа по подготовке к ЕГЭ.
Подробнее
PHP-программист в ЛЕКО
Тверь. Разработка крупных интернет-проектов.
Подробнее
Программист PHP в SRLab
Севастополь. Разработка индивидуальных решений для бизнеса.
Подробнее
Junior PHP-программист в Скобеев и Партнеры
Тамбов. ИТ-услуги и эталонный сервис.
Подробнее
Программист PHP в ИНТАСК
Воронеж. Разработка ПО для электронной торговли.
Подробнее
Понравились вакансии?
👍 — да
👎 — нет
Вакансии недели для джунов 👨🏻🏫
PHP-разработчик в NeoFamily
Санкт-Петербург. Онлайн-школа по подготовке к ЕГЭ.
Подробнее
PHP-программист в ЛЕКО
Тверь. Разработка крупных интернет-проектов.
Подробнее
Программист PHP в SRLab
Севастополь. Разработка индивидуальных решений для бизнеса.
Подробнее
Junior PHP-программист в Скобеев и Партнеры
Тамбов. ИТ-услуги и эталонный сервис.
Подробнее
Программист PHP в ИНТАСК
Воронеж. Разработка ПО для электронной торговли.
Подробнее
Понравились вакансии?
👍 — да
👎 — нет
spb.hh.ru
Вакансия PHP-разработчик в Санкт-Петербурге, работа в компании NeoFamily (вакансия в архиве c 12 октября 2023)
Зарплата: не указана. Санкт-Петербург. Требуемый опыт: 1–3 года. Полная занятость. Дата публикации: 10.10.2023.
🥱8👍2
#хочу_спросить
Задавайте любые вопросы о программировании и получайте ответы от пользователей. В комментариях под постом укажите #язык, #стек и/или #библиотеку, по которым задаете вопрос.
Задавайте любые вопросы о программировании и получайте ответы от пользователей. В комментариях под постом укажите #язык, #стек и/или #библиотеку, по которым задаете вопрос.
😁3👍2
Самые полезные каналы для программистов в одной подборке!
Сохраняйте себе, чтобы не потерять 💾
🔥Для всех
Библиотека программиста — новости, статьи, досуг, фундаментальные темы
Книги для программистов
IT-мемы
Proglib Academy — тут мы рассказываем про обучение и курсы
🐘PHP
Библиотека пхпшника
Вакансии по PHP, Symfony, Laravel
Библиотека PHP для собеса — тренируемся отвечать на каверзные вопросы во время интервью и технического собеседования
Библиотека задач по PHP — код, квизы и тесты
🐍Python
Библиотека питониста
Вакансии по питону, Django, Flask
Библиотека Python для собеса — тренируемся отвечать на каверзные вопросы во время интервью и технического собеседования
Библиотека задач по Python — код, квизы и тесты
☕Java
Библиотека джависта — полезные статьи по Java, новости и обучающие материалы
Библиотека Java для собеса — тренируемся отвечать на каверзные вопросы во время интервью и технического собеседования
Библиотека задач по Java — код, квизы и тесты
Вакансии для java-разработчиков
👾Data Science
Библиотека Data Science — полезные статьи, новости и обучающие материалы
Библиотека Data Science для собеса — тренируемся отвечать на каверзные вопросы во время интервью и технического собеседования
Библиотека задач по Data Science — код, квизы и тесты
Вакансии по Data Science, анализу данных, аналитике, искусственному интеллекту
🦫Go
Библиотека Go разработчика — полезные статьи, новости и обучающие материалы по Go
Библиотека Go для собеса — тренируемся отвечать на каверзные вопросы во время интервью и технического собеседования
Библиотека задач по Go — код, квизы и тесты
Вакансии по Go
🧠C++
Библиотека C/C++ разработчика — полезные статьи, новости и обучающие материалы по C++
Библиотека C++ для собеса — тренируемся отвечать на каверзные вопросы во время интервью и технического собеседования
Библиотека задач по C++ — код, квизы и тесты
Вакансии по C++
💻Другие профильные каналы
Библиотека фронтендера
Библиотека шарписта
Библиотека мобильного разработчика
Библиотека хакера
Библиотека devops’a
Библиотека тестировщика
💼Каналы с вакансиями
Вакансии по фронтенду, джаваскрипт, React, Angular, Vue
Вакансии по C#, .NET, Unity Вакансии по PHP, Symfony, Laravel
Вакансии по DevOps & SRE
Вакансии для мобильных разработчиков
Вакансии по QA тестированию
InfoSec Jobs — вакансии по информационной безопасности
📁Чтобы добавить папку с нашими каналами, нажмите 👉сюда👈
🤖Также у нас есть боты:
Бот с IT-вакансиями
Бот с мероприятиями в сфере IT
Мы в других соцсетях:
🔸VK
🔸YouTube
🔸Дзен
🔸Facebook
🔸Instagram
Сохраняйте себе, чтобы не потерять 💾
🔥Для всех
Библиотека программиста — новости, статьи, досуг, фундаментальные темы
Книги для программистов
IT-мемы
Proglib Academy — тут мы рассказываем про обучение и курсы
🐘PHP
Библиотека пхпшника
Вакансии по PHP, Symfony, Laravel
Библиотека PHP для собеса — тренируемся отвечать на каверзные вопросы во время интервью и технического собеседования
Библиотека задач по PHP — код, квизы и тесты
🐍Python
Библиотека питониста
Вакансии по питону, Django, Flask
Библиотека Python для собеса — тренируемся отвечать на каверзные вопросы во время интервью и технического собеседования
Библиотека задач по Python — код, квизы и тесты
☕Java
Библиотека джависта — полезные статьи по Java, новости и обучающие материалы
Библиотека Java для собеса — тренируемся отвечать на каверзные вопросы во время интервью и технического собеседования
Библиотека задач по Java — код, квизы и тесты
Вакансии для java-разработчиков
👾Data Science
Библиотека Data Science — полезные статьи, новости и обучающие материалы
Библиотека Data Science для собеса — тренируемся отвечать на каверзные вопросы во время интервью и технического собеседования
Библиотека задач по Data Science — код, квизы и тесты
Вакансии по Data Science, анализу данных, аналитике, искусственному интеллекту
🦫Go
Библиотека Go разработчика — полезные статьи, новости и обучающие материалы по Go
Библиотека Go для собеса — тренируемся отвечать на каверзные вопросы во время интервью и технического собеседования
Библиотека задач по Go — код, квизы и тесты
Вакансии по Go
🧠C++
Библиотека C/C++ разработчика — полезные статьи, новости и обучающие материалы по C++
Библиотека C++ для собеса — тренируемся отвечать на каверзные вопросы во время интервью и технического собеседования
Библиотека задач по C++ — код, квизы и тесты
Вакансии по C++
💻Другие профильные каналы
Библиотека фронтендера
Библиотека шарписта
Библиотека мобильного разработчика
Библиотека хакера
Библиотека devops’a
Библиотека тестировщика
💼Каналы с вакансиями
Вакансии по фронтенду, джаваскрипт, React, Angular, Vue
Вакансии по C#, .NET, Unity Вакансии по PHP, Symfony, Laravel
Вакансии по DevOps & SRE
Вакансии для мобильных разработчиков
Вакансии по QA тестированию
InfoSec Jobs — вакансии по информационной безопасности
📁Чтобы добавить папку с нашими каналами, нажмите 👉сюда👈
🤖Также у нас есть боты:
Бот с IT-вакансиями
Бот с мероприятиями в сфере IT
Мы в других соцсетях:
🔸VK
🔸YouTube
🔸Дзен
🥱2❤1👍1🌚1
Перевод сущностей в EasyAdmin с помощью DoctrineBehaviors
В данной статье рассматривается способ перевода сущностей в EasyAdmin. Создается сущность "Article", где можно перевести заголовок, слаг и содержание на несколько языков, а также добавить возможность фильтрации по переводимым полям.
В данной статье рассматривается способ перевода сущностей в EasyAdmin. Создается сущность "Article", где можно перевести заголовок, слаг и содержание на несколько языков, а также добавить возможность фильтрации по переводимым полям.
DEV Community
Translating entities in EasyAdmin with DoctrineBehaviors
In this article we will look at how to translate entities in EasyAdmin. We will create an "Article"...
👍3
Какие процессы происходят, когда пользователь вводит в браузере URL?
Когда пользователь вводит URL в браузере, происходит следующая последовательность процессов:
1. Парсинг URL: Браузер анализирует введенный URL, чтобы выделить протокол, доменное имя и путь к ресурсу.
2. DNS-поиск: Браузер отправляет запрос к DNS-серверу для получения IP-адреса, связанного с доменным именем. DNS-сервер возвращает IP-адрес браузеру.
3. Установка TCP-соединения: Браузер устанавливает TCP-соединение с веб-сервером, используя полученный IP-адрес и порт (обычно порт 80 для HTTP или порт 443 для HTTPS).
4. Отправка HTTP-запроса: Браузер отправляет HTTP-запрос на сервер, включая метод запроса (GET, POST и т.д.), заголовки и URI (Uniform Resource Identifier), который содержит запрошенный ресурс.
5. Обработка и выполнение запроса на сервере: Веб-сервер получает HTTP-запрос, выполняет обработку и обращается к соответствующему приложению или файлу. На этом этапе сервер может также взаимодействовать с базой данных или другими серверами для получения данных, необходимых для формирования ответа.
6. Подготовка HTTP-ответа: Сервер формирует HTTP-ответ, включающий статус запроса, заголовки и содержимое. Код состояния (например, 200 для успешного запроса) указывает на результат обработки запроса.
7. Передача HTTP-ответа: Сформированный HTTP-ответ передается обратно по TCP-соединению на браузер клиента.
8. Обработка HTTP-ответа: Браузер получает HTTP-ответ, анализирует статус запроса и заголовки. Если запрос был успешным, браузер начинает загружать и отображать содержимое ответа (HTML, CSS, JavaScript, изображения и т.д.).
9. Рендеринг и отображение: Браузер обрабатывает полученное содержимое, выполняет интерпретацию HTML, применяет стили CSS, обрабатывает скрипты JavaScript и, в конечном итоге, отображает запрошенную веб-страницу на экране пользователя
#вопросы_с_собеседований
Когда пользователь вводит URL в браузере, происходит следующая последовательность процессов:
1. Парсинг URL: Браузер анализирует введенный URL, чтобы выделить протокол, доменное имя и путь к ресурсу.
2. DNS-поиск: Браузер отправляет запрос к DNS-серверу для получения IP-адреса, связанного с доменным именем. DNS-сервер возвращает IP-адрес браузеру.
3. Установка TCP-соединения: Браузер устанавливает TCP-соединение с веб-сервером, используя полученный IP-адрес и порт (обычно порт 80 для HTTP или порт 443 для HTTPS).
4. Отправка HTTP-запроса: Браузер отправляет HTTP-запрос на сервер, включая метод запроса (GET, POST и т.д.), заголовки и URI (Uniform Resource Identifier), который содержит запрошенный ресурс.
5. Обработка и выполнение запроса на сервере: Веб-сервер получает HTTP-запрос, выполняет обработку и обращается к соответствующему приложению или файлу. На этом этапе сервер может также взаимодействовать с базой данных или другими серверами для получения данных, необходимых для формирования ответа.
6. Подготовка HTTP-ответа: Сервер формирует HTTP-ответ, включающий статус запроса, заголовки и содержимое. Код состояния (например, 200 для успешного запроса) указывает на результат обработки запроса.
7. Передача HTTP-ответа: Сформированный HTTP-ответ передается обратно по TCP-соединению на браузер клиента.
8. Обработка HTTP-ответа: Браузер получает HTTP-ответ, анализирует статус запроса и заголовки. Если запрос был успешным, браузер начинает загружать и отображать содержимое ответа (HTML, CSS, JavaScript, изображения и т.д.).
9. Рендеринг и отображение: Браузер обрабатывает полученное содержимое, выполняет интерпретацию HTML, применяет стили CSS, обрабатывает скрипты JavaScript и, в конечном итоге, отображает запрошенную веб-страницу на экране пользователя
#вопросы_с_собеседований
👍25🥱5🔥1
Решение проблем масштабирования PHP
Команда разработчиков столкнулась с проблемой памяти при экспорте данных в Excel файлы в PHP-проекте. Проблема заключалась в том, что каждый фоновый задача открывала файл, добавляла порцию записей и закрывала файл, что приводило к увеличению потребления памяти.
После многих неудачных попыток решить проблему в PHP, команда решила переписать этот процесс на языке программирования Rust.
Rust был выбран из-за своей эффективности в управлении памятью, поддержки параллельности и безопасности в работе с потоками.
После преодоления кривого обучения команда смогла успешно реализовать новую систему экспорта, которая управляет памятью более эффективно и обеспечивает высокую производительность при обработке больших объемов данных. Для связи между PHP и Rust используется Redis и HTTP-вебхуки.
Команда разработчиков столкнулась с проблемой памяти при экспорте данных в Excel файлы в PHP-проекте. Проблема заключалась в том, что каждый фоновый задача открывала файл, добавляла порцию записей и закрывала файл, что приводило к увеличению потребления памяти.
После многих неудачных попыток решить проблему в PHP, команда решила переписать этот процесс на языке программирования Rust.
Rust был выбран из-за своей эффективности в управлении памятью, поддержки параллельности и безопасности в работе с потоками.
После преодоления кривого обучения команда смогла успешно реализовать новую систему экспорта, которая управляет памятью более эффективно и обеспечивает высокую производительность при обработке больших объемов данных. Для связи между PHP и Rust используется Redis и HTTP-вебхуки.
Eloquent Architecture
Solving PHP Scaling Issues
We have an export feature that can build an Excel file over the course of many background jobs. Worked beautifully for years. Man, those were the days.
👍7🥱1
Verify Domain
PHP Verify Domain позволяет проверить принадлежность домена, проверив содержимое загруженного файла, метатеги и TXT-записи DNS. Вы могли наблюдать подобное поведение при проверке домена в таких сервисах, как "Google Search Console" и ...
Подробнее о пакете Verify Domain вы можете узнать из этой статьи.
PHP Verify Domain позволяет проверить принадлежность домена, проверив содержимое загруженного файла, метатеги и TXT-записи DNS. Вы могли наблюдать подобное поведение при проверке домена в таких сервисах, как "Google Search Console" и ...
Подробнее о пакете Verify Domain вы можете узнать из этой статьи.
GitHub
GitHub - hazaveh/verify-domain: Verify Domain Ownership in PHP
Verify Domain Ownership in PHP. Contribute to hazaveh/verify-domain development by creating an account on GitHub.
🌚2❤1
85% разработчиков готовятся к собеседованиям
Мы опросили студентов Proglib, которые устроились в международные компании, чтобы выяснить, как у них получилось успешно пройти собеседование?
И оказалось, что 85% из них целенаправленно изучали алгоритмы и тренировались решать алгоритмические задачки, чтобы успешно справится с техническим собеседованием.
Тренироваться можно самостоятельно, но если у вас не хватает мотивации заниматься регулярно, то рекомендуем курс «Алгоритмы и структуры данных».
Подробности здесь – https://proglib.io/w/3b4ab5e4
А также до 15 октября по промокоду PROG20OCT вы получите дополнительную скидку 20%.
⚡️Начните с бесплатной части уже сегодня – https://proglib.io/w/3b4ab5e4
Мы опросили студентов Proglib, которые устроились в международные компании, чтобы выяснить, как у них получилось успешно пройти собеседование?
И оказалось, что 85% из них целенаправленно изучали алгоритмы и тренировались решать алгоритмические задачки, чтобы успешно справится с техническим собеседованием.
Тренироваться можно самостоятельно, но если у вас не хватает мотивации заниматься регулярно, то рекомендуем курс «Алгоритмы и структуры данных».
Подробности здесь – https://proglib.io/w/3b4ab5e4
А также до 15 октября по промокоду PROG20OCT вы получите дополнительную скидку 20%.
⚡️Начните с бесплатной части уже сегодня – https://proglib.io/w/3b4ab5e4
🥱5❤2👍1
Match vs Switch
В статье рассматривается нововведение в PHP 8 - выражение match, сравнивая его с уже существующим оператором switch. Статья подчеркивает основные различия между match и switch, включая возможность match возвращать значение, использование break в switch, обработку ошибок и строгое сравнение в match. Кроме того, статья подчеркивает, что match и switch имеют различные сценарии использования и не являются взаимозаменяемыми.
В статье рассматривается нововведение в PHP 8 - выражение match, сравнивая его с уже существующим оператором switch. Статья подчеркивает основные различия между match и switch, включая возможность match возвращать значение, использование break в switch, обработку ошибок и строгое сравнение в match. Кроме того, статья подчеркивает, что match и switch имеют различные сценарии использования и не являются взаимозаменяемыми.
DEV Community
PHP Match Expression - Match vs Switch
The Match expression is essentially the same as the Switch statement and was introduced in PHP...
🥱9👍3❤1
PHP и Laravel дайджест новостей за сентябрь 2023 года
Краткий обзор новостей из мира PHP и Laravel за сентябрь 2023 г.
Краткий обзор новостей из мира PHP и Laravel за сентябрь 2023 г.
Хабр
PHP и Laravel дайджест новостей за сентябрь 2023 года
Всем привет! Краткий обзор новостей из мира PHP и Laravel за сентябрь 2023 г. PHP Дайджест Вышли PHP 8.1.24 и PHP 8.2.11 Выпуски с исправлениями ошибок вышли по расписанию. Вышел третий релиз кандидат...
🥱4👍3
Stat cache - это механизм кэширования результатов низкоуровневых операций чтения информации о файлах (например, права доступа, размер, время последнего изменения) в PHP. Когда вы вызываете несколько операций работы с файловой системой на одном и том же файле быстро подряд, PHP использует stat cache для оптимизации производительности.
❗Основной момент, который стоит отметить, заключается в том, что stat cache кэширует информацию только для одного файла. Если PHP выполняет низкоуровневую операцию на файле и он не был в кэше ранее, он перезапишет предыдущие данные, связанные с предыдущим файлом.
Статья также предоставляет пример того, как могла бы быть реализована stat cache на уровне PHP, и указывает на важность знания о том, как она работает. Она также подчеркивает, что для избежания ошибок в PHP коде, связанных с этим механизмом, иногда приходится использовать функцию clearstatcache(), чтобы очистить кэш.
❗Основной момент, который стоит отметить, заключается в том, что stat cache кэширует информацию только для одного файла. Если PHP выполняет низкоуровневую операцию на файле и он не был в кэше ранее, он перезапишет предыдущие данные, связанные с предыдущим файлом.
Статья также предоставляет пример того, как могла бы быть реализована stat cache на уровне PHP, и указывает на важность знания о том, как она работает. Она также подчеркивает, что для избежания ошибок в PHP коде, связанных с этим механизмом, иногда приходится использовать функцию clearstatcache(), чтобы очистить кэш.
Tideways
The PHP stat cache explained
90% of the time when I explain how the stat cache works in PHP, people are surprised because they expected it to work differently. It was invented to solve a very limited problem when you call several file system related operations on the same file in quick…
👍9❤1
Persistent-request библиотека для надежных запросов
В этой статье рассказывается о создании библиотеки PersistentRequest для гарантированного выполнения запросов и их обработки в среде Laravel.
🎯 Цели создания библиотеки:
Работа с Laravel
Легкость и гибкость использования
Минимум зависимостей
🔍 Что вы узнаете:
Как установить библиотеку через Composer
Инициализация сервиса и создание объектов запросов
Гарантированное выполнение запросов с возможностью повтора
Гибкая настройка логики обработки ответов
🌟 Преимущества использования:
Гарантированное выполнение запросов в асинхронной среде
Легкость настройки и минимум зависимостей
Пользовательская обработка ответов и возможность повторных попыток
В этой статье рассказывается о создании библиотеки PersistentRequest для гарантированного выполнения запросов и их обработки в среде Laravel.
🎯 Цели создания библиотеки:
Работа с Laravel
Легкость и гибкость использования
Минимум зависимостей
🔍 Что вы узнаете:
Как установить библиотеку через Composer
Инициализация сервиса и создание объектов запросов
Гарантированное выполнение запросов с возможностью повтора
Гибкая настройка логики обработки ответов
🌟 Преимущества использования:
Гарантированное выполнение запросов в асинхронной среде
Легкость настройки и минимум зависимостей
Пользовательская обработка ответов и возможность повторных попыток
Хабр
Persistent-request библиотека для надежных запросов
Всем привет! В этой статье расскажу, как решил написать библиотеку https://packagist.org/packages/xman12/persistent-request и что там внутри. Как и любая библиотека, эта решает свои задачи, а именно...
❤5👍1
Объявления типов в Symfony 7.0
Статья рассказывает о длительной инициативе Symfony по добавлению всех возможных объявлений типов в PHP в свой код. Этот процесс начался в Symfony 5, продолжился в Symfony 6 и приближается к завершению в Symfony 7.0.
Добавление объявлений типов требует осторожности, так как это нарушает обратную совместимость в большинстве случаев. В соответствии с процессом выпуска Symfony, такие изменения разрешены только в мажорных версиях (например, 6.0 и 7.0).
Этот процесс был разделен на три мажорных версии, чтобы уменьшить влияние на библиотеки, использующие компоненты Symfony. Это также дает команде кора достаточно времени для создания необходимых инструментов и внимательного рассмотрения каждого изменения.
Цель Symfony 7.0 - добавить каждое возможное объявление типа в PHP. Она включает в себя:
🟠Добавление типов возвращаемых значений для всех методов, которые были пропущены или упущены в Symfony 6.0;
🟠Добавление типа 'void' там, где это применимо;
🟠Добавление типов для всех свойств класса, включая публичные и защищенные свойства.
Статья рассказывает о длительной инициативе Symfony по добавлению всех возможных объявлений типов в PHP в свой код. Этот процесс начался в Symfony 5, продолжился в Symfony 6 и приближается к завершению в Symfony 7.0.
Добавление объявлений типов требует осторожности, так как это нарушает обратную совместимость в большинстве случаев. В соответствии с процессом выпуска Symfony, такие изменения разрешены только в мажорных версиях (например, 6.0 и 7.0).
Этот процесс был разделен на три мажорных версии, чтобы уменьшить влияние на библиотеки, использующие компоненты Symfony. Это также дает команде кора достаточно времени для создания необходимых инструментов и внимательного рассмотрения каждого изменения.
Цель Symfony 7.0 - добавить каждое возможное объявление типа в PHP. Она включает в себя:
🟠Добавление типов возвращаемых значений для всех методов, которые были пропущены или упущены в Symfony 6.0;
🟠Добавление типа 'void' там, где это применимо;
🟠Добавление типов для всех свойств класса, включая публичные и защищенные свойства.
Symfony
Symfony 7.0 Type Declarations (Symfony Blog)
Symfony 7.0 will come with as much PHP type declarations as possible. Open source maintainers are requested to test their libraries and give feedback. You can also start preparing your applications fo...
❤18👍3