CRUD-реальность
Автор делится своим видением CRUD, и на его взгляд главная проблема заключается в обновлении данных.
Фундаментальная проблема этого подхода заключается в том, что он просто предоставляет интерфейс JSON через HTTP поверх системы записи. Конечно, к нему добавлена некоторая логика авторизации и проверки, но вы по-прежнему просто сериализуете JSON в базу данных и обратно.
Обновление ресурса — это гораздо больше, чем просто замена некоторых полей в таблице. «Учетная запись обновлена» не слишком информативна. Нам необходимо знать, что именно изменилось в аккаунте, поэтому просто сказать «что-то обновилось» недостаточно. Нам нужно иметь возможность сказать «пользователь был деактивирован», «билет заархивирован», «заказ отправлен» или «возврат средств обработан».
Он предлагает несколько решений этой проблемы:
✔️Change Data Capture (CDC) — это приложение, которое умеет обрабатывать логи изменений, выделять из них события об изменении данных и уведомлять об этом потребителя изменений, реализующего бизнес-логику.
✔️Вспомогательная история/таблицы журналов
✔️Введение шаблона транзакционного исходящего ящика — подход, которому отдает предпочтение сам автор
Автор делится своим видением CRUD, и на его взгляд главная проблема заключается в обновлении данных.
Фундаментальная проблема этого подхода заключается в том, что он просто предоставляет интерфейс JSON через HTTP поверх системы записи. Конечно, к нему добавлена некоторая логика авторизации и проверки, но вы по-прежнему просто сериализуете JSON в базу данных и обратно.
Обновление ресурса — это гораздо больше, чем просто замена некоторых полей в таблице. «Учетная запись обновлена» не слишком информативна. Нам необходимо знать, что именно изменилось в аккаунте, поэтому просто сказать «что-то обновилось» недостаточно. Нам нужно иметь возможность сказать «пользователь был деактивирован», «билет заархивирован», «заказ отправлен» или «возврат средств обработан».
Он предлагает несколько решений этой проблемы:
✔️Change Data Capture (CDC) — это приложение, которое умеет обрабатывать логи изменений, выделять из них события об изменении данных и уведомлять об этом потребителя изменений, реализующего бизнес-логику.
✔️Вспомогательная история/таблицы журналов
✔️Введение шаблона транзакционного исходящего ящика — подход, которому отдает предпочтение сам автор
The Chilean Nerd
A CRUD Reality
Or why your application needs the Transactional Outbox Pattern
🔥4👍2👏1
Разработчики на PHP умеют писать код, но не всегда знают как устроен web-server
Одной из ключевых особенностей PHP является — легкость для разработчика в написании первой программы. Во многих мануалах для старта разработки сокращают информацию о web-сервере до минимума, например, запустите openserver или скопируйте собранный докер образ, где уже будет все настроено и просто перейдите по адресу https://localhost. Все это приводит к сужению знаний общей картины как работает web-приложение, что негативно влияет на репутацию разработчиков на этом языке программирования в целом.
В этой статье автор рассказывает о web-серверах для PHP, как раз для того, чтобы расширить кругозор тех людей, кто пропустил эту тему и постараться раскрыть ее максимально простым и понятным языком.
Одной из ключевых особенностей PHP является — легкость для разработчика в написании первой программы. Во многих мануалах для старта разработки сокращают информацию о web-сервере до минимума, например, запустите openserver или скопируйте собранный докер образ, где уже будет все настроено и просто перейдите по адресу https://localhost. Все это приводит к сужению знаний общей картины как работает web-приложение, что негативно влияет на репутацию разработчиков на этом языке программирования в целом.
В этой статье автор рассказывает о web-серверах для PHP, как раз для того, чтобы расширить кругозор тех людей, кто пропустил эту тему и постараться раскрыть ее максимально простым и понятным языком.
Хабр
Разработчики на PHP умеют писать код, но не всегда знают как устроен web-server
Одной из ключевых особенностей PHP является - легкость для разработчика в написании первой программы. Во многих мануалах для старта разработки сокращают информацию о web-сервере до минимума, например,...
👍12😁3🔥2
Объединение ваших компонентов Symfony UX Twig
Статья посвящена Symfony UX Twig Components и их повторному использованию в приложениях. В ней рассматриваются два типа компонентов:
Полнофункциональные компоненты (FullStack Components):
🔸Включают PHP-класс (контроллер), Twig-шаблон (пользовательский интерфейс) и опциональные ресурсы (JavaScript, CSS).
🔸Эти компоненты могут динамически получать данные из источников и отображать их в интерфейсе. Примером может служить таблица с рекомендованными продуктами, отображаемая на главной странице и на страницах отдельных продуктов.
UI-компоненты (UI-only Components, также известные как Anonymous Twig Components):
🔸Состоят только из Twig-шаблона и опциональных ресурсов, без контроллера.
🔸Полезны для статического контента или данных из неизвестных источников. Примеры включают кнопку с меткой или сообщение об ошибке.
Статья посвящена Symfony UX Twig Components и их повторному использованию в приложениях. В ней рассматриваются два типа компонентов:
Полнофункциональные компоненты (FullStack Components):
🔸Включают PHP-класс (контроллер), Twig-шаблон (пользовательский интерфейс) и опциональные ресурсы (JavaScript, CSS).
🔸Эти компоненты могут динамически получать данные из источников и отображать их в интерфейсе. Примером может служить таблица с рекомендованными продуктами, отображаемая на главной странице и на страницах отдельных продуктов.
UI-компоненты (UI-only Components, также известные как Anonymous Twig Components):
🔸Состоят только из Twig-шаблона и опциональных ресурсов, без контроллера.
🔸Полезны для статического контента или данных из неизвестных источников. Примеры включают кнопку с меткой или сообщение об ошибке.
DEV Community
Bundling Your Symfony UX Twig Components
Have you heard about Symfony UX Twig Components? If not, I recommend starting by reading the official...
👍3
Привет, друзья! 👋
Мы готовим статью о возможном снижении уровня знаний среди IT-специалистов и хотим узнать ваше мнение. Поделитесь своими мыслями, ответив на следующие вопросы:
Как вы оцениваете уровень знаний современных IT-специалистов по сравнению с их предшественниками 10-15 лет назад? 🤔
- Значительно снизился 📉
- Немного снизился 🔻
- Остался на том же уровне ➡️
- Немного повысился 🔼
- Значительно повысился 📈
Какие факторы, по вашему мнению, наиболее сильно влияют на уровень знаний IT-специалистов сегодня? (выберите до 3 вариантов) 🧠
- Качество образования в вузах 🎓
- Доступность онлайн-курсов и самообучения 💻
- Требования рынка труда 💼
- Развитие технологий и инструментов разработки 🛠️
- Влияние социальных сетей и информационного шума 📱
- Отток квалифицированных специалистов ✈️
- Другое (укажите в комментариях) 🗨️
Как вы считаете, что нужно сделать для повышения уровня знаний IT-специалистов? 💡
Поделитесь своими идеями в комментариях! Самые интересные и конструктивные предложения мы обязательно включим в нашу статью. Спасибо за участие! 🙏
Мы готовим статью о возможном снижении уровня знаний среди IT-специалистов и хотим узнать ваше мнение. Поделитесь своими мыслями, ответив на следующие вопросы:
Как вы оцениваете уровень знаний современных IT-специалистов по сравнению с их предшественниками 10-15 лет назад? 🤔
- Значительно снизился 📉
- Немного снизился 🔻
- Остался на том же уровне ➡️
- Немного повысился 🔼
- Значительно повысился 📈
Какие факторы, по вашему мнению, наиболее сильно влияют на уровень знаний IT-специалистов сегодня? (выберите до 3 вариантов) 🧠
- Качество образования в вузах 🎓
- Доступность онлайн-курсов и самообучения 💻
- Требования рынка труда 💼
- Развитие технологий и инструментов разработки 🛠️
- Влияние социальных сетей и информационного шума 📱
- Отток квалифицированных специалистов ✈️
- Другое (укажите в комментариях) 🗨️
Как вы считаете, что нужно сделать для повышения уровня знаний IT-специалистов? 💡
Поделитесь своими идеями в комментариях! Самые интересные и конструктивные предложения мы обязательно включим в нашу статью. Спасибо за участие! 🙏
Узнайте о преимуществах объектов передачи данных (DTO) и о том, как readonly-классы PHP 8.2, могут улучшить ваш код
Объект передачи данных (DTO) — это простой объект, предназначенный для переноса данных между процессами или системами. В отличие от моделей или сущностей, DTO не содержат бизнес-логики и служат для структурированной передачи информации между различными слоями приложения или системами.
Преимущества использования DTO
Разделение ответственности: Изолируют бизнес-логику от представления данных, делая код более чистым и поддерживаемым.
Проверка данных: Позволяют проверять данные до их обработки, обеспечивая использование только допустимых данных.
Согласованность: Предоставляют согласованную структуру для передачи данных, упрощая их управление и обработку.
Безопасность: Защищают приложение от несанкционированного изменения данных, контролируя доступные и изменяемые данные.
Тестирование: Поскольку DTO — это простые объекты без встроенной бизнес-логики, их проще имитировать и тестировать.
Преобразование: Способствуют преобразованию данных в нужные форматы для различных слоев приложения.
Неизменяемость: DTO часто делают неизменяемыми, что облегчает предсказуемость, потокобезопасность и отладку.
PHP 8.2 и классы только для чтения
С выходом PHP 8.2 классы только для чтения улучшают использование DTO, делая свойства неизменяемыми автоматически. Это снижает количество шаблонного кода, повышает безопасность данных и улучшает поддерживаемость кода.
Использование DTO в приложениях Laravel обеспечивает согласованность данных, проверку и разделение ответственности. DTO делают ваше приложение более поддерживаемым, безопасным и простым для тестирования. В системе управления недвижимостью DTO помогают эффективно обрабатывать данные из различных источников, обеспечивая чистоту и фокус бизнес-логики на обработке проверенных данных.
Объект передачи данных (DTO) — это простой объект, предназначенный для переноса данных между процессами или системами. В отличие от моделей или сущностей, DTO не содержат бизнес-логики и служат для структурированной передачи информации между различными слоями приложения или системами.
Преимущества использования DTO
Разделение ответственности: Изолируют бизнес-логику от представления данных, делая код более чистым и поддерживаемым.
Проверка данных: Позволяют проверять данные до их обработки, обеспечивая использование только допустимых данных.
Согласованность: Предоставляют согласованную структуру для передачи данных, упрощая их управление и обработку.
Безопасность: Защищают приложение от несанкционированного изменения данных, контролируя доступные и изменяемые данные.
Тестирование: Поскольку DTO — это простые объекты без встроенной бизнес-логики, их проще имитировать и тестировать.
Преобразование: Способствуют преобразованию данных в нужные форматы для различных слоев приложения.
Неизменяемость: DTO часто делают неизменяемыми, что облегчает предсказуемость, потокобезопасность и отладку.
PHP 8.2 и классы только для чтения
С выходом PHP 8.2 классы только для чтения улучшают использование DTO, делая свойства неизменяемыми автоматически. Это снижает количество шаблонного кода, повышает безопасность данных и улучшает поддерживаемость кода.
Использование DTO в приложениях Laravel обеспечивает согласованность данных, проверку и разделение ответственности. DTO делают ваше приложение более поддерживаемым, безопасным и простым для тестирования. В системе управления недвижимостью DTO помогают эффективно обрабатывать данные из различных источников, обеспечивая чистоту и фокус бизнес-логики на обработке проверенных данных.
👍9
Forwarded from Библиотека собеса по PHP | вопросы с собеседований
Что такое куча и стек?
Куча (heap) и Стек (stack) — это две основных области в памяти программы, где хранятся данные, но они используются по-разному.
Стек (Stack):
Что это: Стек представляет собой линейную структуру данных, где операции выполняются в порядке Last In, First Out (LIFO).
Использование: В стеке хранятся локальные переменные функций, адреса возврата, параметры функций и прочая информация о выполнении функций.
Жизненный цикл: Стековая память выделяется и освобождается автоматически при входе и выходе из функций.
Ограничения: Ограниченный размер, быстрый доступ к данным.
Куча (Heap):
Что это: Куча — это динамическая область памяти, где хранятся данные, созданные во время выполнения программы.
Использование: В куче располагаются объекты, массивы и другие динамические данные, управляемые программистом.
Жизненный цикл: Ручное управление выделением и освобождением памяти (например, через new и delete в C++ или malloc и free в C).
Ограничения: Больший размер, более гибкое использование, но требует аккуратного управления памятью, чтобы избежать утечек или дефрагментации.
Куча (heap) и Стек (stack) — это две основных области в памяти программы, где хранятся данные, но они используются по-разному.
Стек (Stack):
Что это: Стек представляет собой линейную структуру данных, где операции выполняются в порядке Last In, First Out (LIFO).
Использование: В стеке хранятся локальные переменные функций, адреса возврата, параметры функций и прочая информация о выполнении функций.
Жизненный цикл: Стековая память выделяется и освобождается автоматически при входе и выходе из функций.
Ограничения: Ограниченный размер, быстрый доступ к данным.
Куча (Heap):
Что это: Куча — это динамическая область памяти, где хранятся данные, созданные во время выполнения программы.
Использование: В куче располагаются объекты, массивы и другие динамические данные, управляемые программистом.
Жизненный цикл: Ручное управление выделением и освобождением памяти (например, через new и delete в C++ или malloc и free в C).
Ограничения: Больший размер, более гибкое использование, но требует аккуратного управления памятью, чтобы избежать утечек или дефрагментации.
👍6
Настройка среды разработки с помощью Laravel Sail (Docker)
Здесь объясняется, как настроить среду разработки для Laravel с помощью Laravel Sail, не устанавливая среду локально на ваш компьютер.
Здесь объясняется, как настроить среду разработки для Laravel с помощью Laravel Sail, не устанавливая среду локально на ваш компьютер.
DEV Community
Setting Up a Development Environment Using Laravel Sail (Docker)
Laravel Sail is a lightweight command-line interface for interacting with Laravel’s Docker...
👍5🌚1
Берём под контроль TODO-шки в коде php
Проблема со сложностью управления TODO/FIXME комментариями в коде очень стара. Ей больше 50 лет. Дошло до того, что в некоторых проектах начали запрещать их со словами: «или исправь сразу или не создавай мусор». Вот о том как можно автоматизировать управление ими и превратить из мусора в полезный инструмент и пойдет речь.
Проблема со сложностью управления TODO/FIXME комментариями в коде очень стара. Ей больше 50 лет. Дошло до того, что в некоторых проектах начали запрещать их со словами: «или исправь сразу или не создавай мусор». Вот о том как можно автоматизировать управление ими и превратить из мусора в полезный инструмент и пойдет речь.
Хабр
Берём под контроль TODO-шки в коде php
Проблема со сложностью управления TODO/FIXME комментариями в коде очень стара. Ей больше 50 лет. Дошло до того, что в некоторых проектах начали запрещать их со словами: “или исправь сразу или не...
👍9🔥1
Привет, друзья! 👋
Мы готовим статью о важных soft skills для сеньоров, тимлидов и других старших IT-специалистов. Нам очень интересно узнать ваше мнение! Поделитесь своими мыслями, ответив на следующие вопросы:
Какой из перечисленных в статье soft skills вы считаете самым важным для успешной работы в IT? 🤔
- Умение говорить «нет» 🚫
- Давать конструктивный фидбэк 💬
- Брать на себя ответственность 💪
- Общаться с токсичными людьми 🧘
- Доводить процессы до завершения ✅
- Организовывать эффективные совещания 📊
- Импровизировать на публике 🎭
- Сохранять спокойствие в сложных ситуациях 😌
Какой дополнительный soft skill вы бы добавили в этот список? 🆕
Как вы развиваете свои soft skills? 📈
Поделитесь своими мыслями и опытом в комментариях! Самые интересные идеи и предложения мы обязательно включим в нашу статью. Спасибо за участие! 🙏
Мы готовим статью о важных soft skills для сеньоров, тимлидов и других старших IT-специалистов. Нам очень интересно узнать ваше мнение! Поделитесь своими мыслями, ответив на следующие вопросы:
Какой из перечисленных в статье soft skills вы считаете самым важным для успешной работы в IT? 🤔
- Умение говорить «нет» 🚫
- Давать конструктивный фидбэк 💬
- Брать на себя ответственность 💪
- Общаться с токсичными людьми 🧘
- Доводить процессы до завершения ✅
- Организовывать эффективные совещания 📊
- Импровизировать на публике 🎭
- Сохранять спокойствие в сложных ситуациях 😌
Какой дополнительный soft skill вы бы добавили в этот список? 🆕
Как вы развиваете свои soft skills? 📈
Поделитесь своими мыслями и опытом в комментариях! Самые интересные идеи и предложения мы обязательно включим в нашу статью. Спасибо за участие! 🙏
👍2👏1
Forwarded from Библиотека C/C++ разработчика | cpp, boost, qt
💻 15 продвинутых лайфхаков для работы в терминале Linux
Рассказываем, как использовать малоизвестные, но мощные инструменты терминала: от редактирования длинных команд в текстовом редакторе до автоматизации сложных процессов с помощью tmux.
👉 Ссылка
Рассказываем, как использовать малоизвестные, но мощные инструменты терминала: от редактирования длинных команд в текстовом редакторе до автоматизации сложных процессов с помощью tmux.
👉 Ссылка
👍4😢1
Forwarded from Библиотека программиста | программирование, кодинг, разработка
🍒 Подборка лучших статей «Библиотеки программиста» за июль: сохраняй в заметки, чтобы не пропустить #самыйсок
🤖 Создание собственного ИИ-бота на Python за 33 строчки кода
🆚 Docker или Podman: что лучше подойдет для вашего проекта
🏅🏃 Кто такие Junior, Middle, Senior и чем они различаются между собой
🎓 Как я перешел из математиков в аналитики данных
🏝️ Решаем очень сложную SQL-задачу об островах и проливах
🚩 Как понять, что с компанией точно что-то не так: 11 красных флагов на собеседовании
🤤 Жадные алгоритмы: все, что нужно знать для собеседования
💬😊 Как найти общий язык с коллегами на новой работе: 11 простых советов
🤔 Инварианты: проектирование эффективных алгоритмов
🐬🐘 PostgreSQL или MySQL: что лучше подойдет для вашего проекта
🐛 5 признаков неопытного разработчика: как избежать типичных ошибок и ускорить профессиональный рост
🏃 Самоучитель по Go для начинающих. Часть 14
🆕 JavaScript эволюционирует: новые методы и функции для эффективной разработки
🤖 Создание собственного ИИ-бота на Python за 33 строчки кода
🆚 Docker или Podman: что лучше подойдет для вашего проекта
🏅🏃 Кто такие Junior, Middle, Senior и чем они различаются между собой
🎓 Как я перешел из математиков в аналитики данных
🏝️ Решаем очень сложную SQL-задачу об островах и проливах
🚩 Как понять, что с компанией точно что-то не так: 11 красных флагов на собеседовании
🤤 Жадные алгоритмы: все, что нужно знать для собеседования
💬😊 Как найти общий язык с коллегами на новой работе: 11 простых советов
🤔 Инварианты: проектирование эффективных алгоритмов
🐬🐘 PostgreSQL или MySQL: что лучше подойдет для вашего проекта
🐛 5 признаков неопытного разработчика: как избежать типичных ошибок и ускорить профессиональный рост
🏃 Самоучитель по Go для начинающих. Часть 14
🆕 JavaScript эволюционирует: новые методы и функции для эффективной разработки
❤4
Итераторы PHP для прохода по структурам данных
В этом туториале рассказано про итераторы PHP и то, как использовать их для работы с различными структурами данных.
В этом туториале рассказано про итераторы PHP и то, как использовать их для работы с различными структурами данных.
DEV Community
PHP Iterators for walking through data structures – FastTips
PHP Iterators are essential tools for efficiently traversing and manipulating data structures like...
🔥5👍2🎉2😁1🥱1
🕸 7 HTML-трюков, которые вам нужно знать
Семь HTML-трюков, которые должны быть в арсенале каждого веб-разработчика. Эти приемы помогут вам создавать более удобные и визуально привлекательные сайты, улучшая взаимодействие с пользователями.
🔗 Читать статью
🔗 Зеркало
Семь HTML-трюков, которые должны быть в арсенале каждого веб-разработчика. Эти приемы помогут вам создавать более удобные и визуально привлекательные сайты, улучшая взаимодействие с пользователями.
🔗 Читать статью
🔗 Зеркало
👍1
Foundry
Библиотека-фабрика моделей для создания выразительных, автозаполняемых по требованию фич для разработки/тестирования с помощью Symfony и Doctrine.
Библиотека-фабрика моделей для создания выразительных, автозаполняемых по требованию фич для разработки/тестирования с помощью Symfony и Doctrine.
GitHub
GitHub - zenstruck/foundry: A model factory library for creating expressive, auto-completable, on-demand dev/test fixtures with…
A model factory library for creating expressive, auto-completable, on-demand dev/test fixtures with Symfony and Doctrine. - zenstruck/foundry
👍4👾1
Какая разница между MyISAM и InnoDB? В каких случаях и что лучше применять?
MyISAM и InnoDB — это два самых распространенных типа таблиц в MySQL. Отличия между ними заключаются в следующем:
1. Система хранения данных: MyISAM использует таблицы с фиксированной длиной строк, в то время как InnoDB использует таблицы с переменной длиной строк. Это означает, что MyISAM обычно быстрее при выполнении операций чтения, а InnoDB более эффективен при выполнении операций записи.
2. Транзакции и целостность данных: InnoDB поддерживает ACID-транзакции (Atomicity, Consistency, Isolation, Durability — Атомарность, Согласованность, Изолированность, Устойчивость). Это означает, что в случае сбоя данных, InnoDB может откатить все изменения, сохраняя целостность данных. MyISAM не поддерживает транзакции и не обеспечивает такую же уровень целостности данных.
3. Блокировка таблиц: MyISAM блокирует всю таблицу во время выполнения операции записи, в то время как InnoDB блокирует только строки, с которыми происходит операция. Это означает, что InnoDB обычно более подходит для многопользовательских приложений, где множество операций происходит одновременно.
4. Внешние ключи: InnoDB поддерживает внешние ключи (foreign keys), что облегчает поддержку связей между таблицами и обеспечивает целостность данных. MyISAM не поддерживает внешние ключи.
Итак, в каких случаях что лучше использовать:
🔸 Если нагрузка на базу данных состоит главным образом из операций чтения, то MyISAM может быть предпочтительнее из-за его более высокой производительности.
🔸 Если приложение требует поддержку транзакций (например, при обработке платежей или других критически важных операций), или имеется необходимость в внешних ключах для поддержания целостности данных, то InnoDB является более подходящим выбором.
В отличие от MyISAM, InnoDB также более рекомендуется при работе с многопользовательскими приложениями, где одновременно выполняется много операций записи и требуется высокий уровень целостности данных.
#вопросы_с_собеседований
MyISAM и InnoDB — это два самых распространенных типа таблиц в MySQL. Отличия между ними заключаются в следующем:
1. Система хранения данных: MyISAM использует таблицы с фиксированной длиной строк, в то время как InnoDB использует таблицы с переменной длиной строк. Это означает, что MyISAM обычно быстрее при выполнении операций чтения, а InnoDB более эффективен при выполнении операций записи.
2. Транзакции и целостность данных: InnoDB поддерживает ACID-транзакции (Atomicity, Consistency, Isolation, Durability — Атомарность, Согласованность, Изолированность, Устойчивость). Это означает, что в случае сбоя данных, InnoDB может откатить все изменения, сохраняя целостность данных. MyISAM не поддерживает транзакции и не обеспечивает такую же уровень целостности данных.
3. Блокировка таблиц: MyISAM блокирует всю таблицу во время выполнения операции записи, в то время как InnoDB блокирует только строки, с которыми происходит операция. Это означает, что InnoDB обычно более подходит для многопользовательских приложений, где множество операций происходит одновременно.
4. Внешние ключи: InnoDB поддерживает внешние ключи (foreign keys), что облегчает поддержку связей между таблицами и обеспечивает целостность данных. MyISAM не поддерживает внешние ключи.
Итак, в каких случаях что лучше использовать:
🔸 Если нагрузка на базу данных состоит главным образом из операций чтения, то MyISAM может быть предпочтительнее из-за его более высокой производительности.
🔸 Если приложение требует поддержку транзакций (например, при обработке платежей или других критически важных операций), или имеется необходимость в внешних ключах для поддержания целостности данных, то InnoDB является более подходящим выбором.
В отличие от MyISAM, InnoDB также более рекомендуется при работе с многопользовательскими приложениями, где одновременно выполняется много операций записи и требуется высокий уровень целостности данных.
#вопросы_с_собеседований
👍15🥱8
Поддержка HTML 5 в PHP 8.4
В PHP 8.4 появится парсер, совместимый с HTML 5. Также подчеркивается, что, несмотря на давние недостатки PHP и отсутствие надлежащей поддержки HTML 5, эта новая функция представляет собой значительное улучшение. Новый парсер полностью совместим с предыдущими версиями и расположен в новом пространстве имен под классом \Dom\HTMLDocument, в то время как старый класс \DOMDocument остается в основном без изменений, теперь расширяя абстрактный класс \Dom\Document.
Ключевые особенности нового парсера включают:
🔸Обратная совместимость: Старый класс \DOMDocument сохранен с незначительными изменениями, в то время как новый парсер, совместимый с HTML 5, представлен в отдельном классе.
🔸Статические конструкторы: Новая реализация использует статические конструкторы (например, createEmpty, createFromFile и createFromString), вместо вызова методов на вновь созданных объектах.
🔸Новые объекты DOM: Использование нового парсера приводит к созданию других типов объектов значений (например, \DOM\Node вместо \DOMNode), что отражает различия между старой и новой реализациями.
В PHP 8.4 появится парсер, совместимый с HTML 5. Также подчеркивается, что, несмотря на давние недостатки PHP и отсутствие надлежащей поддержки HTML 5, эта новая функция представляет собой значительное улучшение. Новый парсер полностью совместим с предыдущими версиями и расположен в новом пространстве имен под классом \Dom\HTMLDocument, в то время как старый класс \DOMDocument остается в основном без изменений, теперь расширяя абстрактный класс \Dom\Document.
Ключевые особенности нового парсера включают:
🔸Обратная совместимость: Старый класс \DOMDocument сохранен с незначительными изменениями, в то время как новый парсер, совместимый с HTML 5, представлен в отдельном классе.
🔸Статические конструкторы: Новая реализация использует статические конструкторы (например, createEmpty, createFromFile и createFromString), вместо вызова методов на вновь созданных объектах.
🔸Новые объекты DOM: Использование нового парсера приводит к созданию других типов объектов значений (например, \DOM\Node вместо \DOMNode), что отражает различия между старой и новой реализациями.
stitcher.io
HTML 5 support in PHP 8.4 - stitcher.io
PHP 8.4 adds a new HTML-5 compliant parser
🔥7👍2🎉2🥱2❤1
Open-source. Плюсы и минусы на примере MoonShine Laravel
Здесь автор делится опытом создания и развития open-source проекта MoonShine, полученным за два года существования проекта
Здесь автор делится опытом создания и развития open-source проекта MoonShine, полученным за два года существования проекта
Хабр
Open-source. Плюсы и минусы на примере MoonShine Laravel
Привет, коллеги! Сегодня хочу поделиться опытом создания и развития open-source проекта MoonShine , которому стукнуло уже 2 года. 🎉 Идея возникновения Всё началось с идеи в telegram-чате Laravel...
🔥12👍5⚡2🤔1
🧑💻 Статьи для IT: как объяснять и распространять значимые идеи
Напоминаем, что у нас есть бесплатный курс для всех, кто хочет научиться интересно писать — о программировании и в целом.
Что: семь модулей, посвященных написанию, редактированию, иллюстрированию и распространению публикаций.
Для кого: для авторов, копирайтеров и просто программистов, которые хотят научиться интересно рассказывать о своих проектах.
👉Материалы регулярно дополняются, обновляются и корректируются. А еще мы отвечаем на все учебные вопросы в комментариях курса.
Напоминаем, что у нас есть бесплатный курс для всех, кто хочет научиться интересно писать — о программировании и в целом.
Что: семь модулей, посвященных написанию, редактированию, иллюстрированию и распространению публикаций.
Для кого: для авторов, копирайтеров и просто программистов, которые хотят научиться интересно рассказывать о своих проектах.
👉Материалы регулярно дополняются, обновляются и корректируются. А еще мы отвечаем на все учебные вопросы в комментариях курса.
👍1