Библиотека пхпшника | PHP, Laravel, Symfony, CodeIgniter
11.3K subscribers
1.34K photos
21 videos
26 files
4.03K links
Все самое полезное для пхпшника в одном канале.

По рекламе: @proglib_adv

Учиться у нас: https://proglib.io/w/bca892d6

Для обратной связи: @proglibrary_feeedback_bot

РКН: https://gosuslugi.ru/snet/67a5d13cd6fa92100ee6f68b
Download Telegram
Первый #дайджест новостей по PHP в этом году:

🔎Вышел Laravel 10.39 — На этой неделе команда Laravel выпустила версию 10.39 с циклической почтовой программой, динамическим максимальным количеством попыток для заданий в очереди и многим другим.

🔎Выпущена Symfony 7.0.2 — Вот список наиболее важных изменений со времен версии 7.0.1.

🔎Неделя Symfony #887 (25-31 декабря 2023 г.)

🔎Выпущен PHP 8.2.14 — Это релиз с исправлением ошибок. Всем пользователям PHP 8.2 рекомендуется выполнить обновление до этой версии.

🔎Выпущена версия CakePHP Audit-stash 4.0.0. — Что изменилось: исправлены неработающие тесты на локальном компьютере и добавлен конвейер действий GH от cnizzardini
5😁2
Объекты-значения в PHP 8: Сущности

🧱 Value Objects (Объекты Значений):
Value Objects — незаслуженно недооценные герои нашего кода, приносящие неизменяемость и предсказуемость в наши приложения. Они инкапсулируют небольшие кусочки данных, обеспечивая постоянство их состояния. Такая предсказуемость упрощает наш код и способствует общей стабильности системы.

👥 Entities (Сущности):
В отличие от Value Objects, Entities обладают уникальной идентичностью, позволяя им изменять свое состояние и сохранять свою индивидуальность. Давайте глубже погрузимся в качества, которые определяют сущность в наших PHP-приложениях.

Основные характеристики Entities включают:

1️⃣Идентичность: У Entities есть уникальный идентификатор, который является ключевым для сценариев, где важны устойчивость и изменяемость.
2️⃣Изменяемость: В отличие от Value Objects, Entities могут изменять свое состояние в течение жизненного цикла, приспосабливаясь к различным сценариям.
3️⃣Устойчивость за пределами одной транзакции: Entities сохраняются за пределами одной транзакции, обеспечивая их долговечность через взаимодействие с системой. В статье рекомендуется использование шаблона Repository для хранения и извлечения Entities.

Здесь представлен концепт Immutable Entities, достигаемый с использованием открытых только для чтения свойств и создания новых экземпляров для каждого изменения. Также рассматривается проблема управления версиями сущности, предлагая решение на основе создания хеш-строки для стабильной и сравнимой идентификации версии.

Демонстрируется интеграция Value Objects в Entities, улучшающая ясность кода и поддерживаемость. Выделены практические соображения при выборе между Value Objects и Entities в зависимости от конкретных требований системы.
👍91
Версионная миграция структуры базы данных через PHP атрибуты

Исчерпывающий гайд, который описывает подход к созданию миграций и определения структуры базы данных в фреймворке Laravel с использованием классов моделей, атрибутов PHP и специальных команд. Автор предлагает использовать атрибуты PHP для определения полей, индексов, отношений и других характеристик таблицы внутри класса модели. Вместе с этим он представляет механизм миграций, который позволяет легко вносить изменения в структуру базы данных.
🥱5👍2🤔2👾1
Объекты значений в PHP 8: расширенное использование

Этот материал является частью цикла статей про объекты-значения, как и вчерашний пост. Он занимается пониманием и использованием объектов-значений (Value Objects), классифицируя их на три основных типа: Простые, Сложные и Композитные.

1️⃣Простые объекты-значения: Они инкапсулируют единственное значение, представляя основные концепции в предметной области. В статье используется пример объекта-значения Age, включая рекомендации, такие как соблюдение принципа единственной ответственности, неизменяемость, валидация, строковое представление и метод для проверки равенства.

2️⃣Сложные объекты-значения: Они обрабатывают более сложные структуры или несколько атрибутов, моделируя более богатые концепции в предметной области. Статья иллюстрирует это на примере объекта-значения Coordinates, представляющего географические координаты. Здесь акцент делается на структурированном представлении, валидации, значимом строковом представлении и методе для проверки равенства.

3️⃣Композитные объекты-значения: Они объединяют несколько простых или сложных объектов-значений в единый комплексный объект, представляя более сложные концепции в предметной области. Примером служит композитный объект-значение Address, состоящий из улицы, города и почтового индекса. Здесь рекомендации включают композицию, абстракцию, значимое строковое представление и метод для проверки равенства.

Здесь также обсуждаются фабричные методы и закрытые конструкторы, на примере DateTimeValueObject. Это демонстрирует гибкость использования закрытых или открытых конструкторов в зависимости от дизайнерских предпочтений.

Кроме того, рассмотрены альтернативы исключениям, представляя концепцию Either и объединенные типы (Union Types) в PHP 8.0 для обработки ошибок. Оба подхода предоставляют гибкость управления результатами, где Either предлагает структурированный метод, а объединенные типы соответствуют философии «позвольте ему быстро завершиться».
👍6
Для чего используется функция header()?

Функция header() в PHP используется для отправки HTTP-заголовков из сервера в браузер.

Основные случаи использования функции header() в PHP включают:

1. Установка статуса и заголовков ответа сервера:
В этом примере функция header() устанавливает статус ответа на «200 OK» и тип содержимого на «application/json».

2. Управление кешированием:
В этом примере функция header() устанавливает заголовки, которые предотвращают кеширование страницы в браузере.

3. Перенаправление пользователя на другую страницу:
В этом примере функция header() выполняет перенаправление пользователя на указанный URL.

4. Установка cookie:
В этом примере функция header() устанавливает cookie с именем «name» и значением «value», а также указывает срок и путь доступа к cookie.

Важно отметить, что функция header() должна быть вызвана до вывода любого другого содержимого на страницу, чтобы гарантировать успешное отправление заголовков.

#вопросы_с_собеседований
👍14🥱7🔥41
Восхождение на Эверест в шлепанцах: путь в PHP в качестве разработчика Python

Описывается опыт решения задачи изучения и реализации PHP для проекта печатающего API с использованием помощника по кодированию на искусственном интеллекте по имени Cody. Задача заключалась в том, чтобы в ограниченные сроки перевести функциональный API из Python в PHP.

Внимание акцентируется на эффективности использования Коди для генерации каркаса кода PHP на основе выбранных сегментов кода Python. Автор хвалит функцию автозаполнения, исправления кода и общую скорость процесса кодирования при использовании Коди. В статье также затрагивается предпочтение автора Коди перед ChatGPT-4 из-за его способности навигации и ответа на вопросы относительно всего кодовой базы, предоставляя контекст и понимание.
👍52
Forwarded from Библиотека программиста | программирование, кодинг, разработка
🤘 Особенности работы в ИТ: информация из первых рук

👨‍💻 Недавно мы проводили среди вас опрос, а теперь делимся интересными выводами обо всех аспектах работы в ИТ.

📊 Выяснили, с каким стеком можно получать 300к+, что айтишники думают о рекрутерах, насколько они довольны своей зарплатой и ради чего могут сменить работу.

💬 Пишите в комментариях другие темы, о которых вам хотелось бы узнать👇
👍5😁4🥱21
Юнит-тесты в Laravel на примере

Рассматривается опыт тестирования программного обеспечения, призывая читателей попробовать его сами, изучив тесты в известных открытых проектах. В фокусе — модульное тестирование FileSystems в Laravel. Обсуждаются особенности теста, использующего PHPUnit и Mockery framework для создания мок-объектов. Подробно описываются ключевые моменты, такие как создание временной директории, инициализация объекта Filesystem, тестирование операций с файлами и директориями, работа с LazyCollection, проверка исключений, добавление макросов, а также другие аспекты. Автор выражает надежду, что материал поможет читателям улучшить навыки в тестировании программного обеспечения.
👍41🔥1
#дайджест #phpdevjob

Вакансии недели для Москвы 👨🏻‍🏫

Middle PHP-разработчик в КСК ЭКСПЕРТ
Москва. Разработка ПО.
Подробнее

Middle+ PHP backend developer в Чек-Ап Онлайн
Москва. IT платформа управления бизнесом.
Подробнее

PHP / Laravel Developer в KingBoost
Москва. Разработка ПО.
Подробнее

PHP developer в КОМПОТ
Москва. Разработка и поддержка IT-проектов для крупных компаний.
Подробнее

PHP-программист в SVK.Digital
Москва. Разработка цифровых продуктов.
Подробнее

Понравились вакансии?
❤️ — да
🤔 — нет
6🤔2👍1
Super-Linter

Комбинация линтеров, которую можно установить как GitHub Actions. Это может быть полезно, если у вас есть многоязычные проекты.
🤔21
Как работает Garbage Collector? Когда есть смысл вызвать?

Garbage Collector (GC) — это механизм в PHP, который автоматически освобождает память, занятую объектами, которые больше не используются в программе. Он следит за объектами в памяти и удаляет те, на которые нет ссылок или которые больше не доступны из текущего контекста программы.

GC работает путем использования алгоритма подсчета ссылок. Каждый раз, когда создается объект, счетчик ссылок на него увеличивается, и если нет ссылок на объект, счетчик уменьшается. Когда счетчик становится равным нулю, объект считается мусором и подлежит удалению GC.

При вызове GC есть несколько моментов, которые могут быть полезны:

1. Когда вы закончили использовать большой объем памяти, который является временным. Например, если вы обрабатываете большие файлы или создаете множество объектов в цикле, вызов GC после завершения таких операций поможет освободить память.

2. Когда у вас есть длительное время выполнения скрипта и вы опасаетесь, что память может исчерпаться. Хотя GC автоматически выполняет свою работу, вызов GC в явном виде может помочь освободить память раньше, чем это произойдет автоматически.

3. Когда вы создаете циклическую ссылку между объектами и планируете разорвать эти ссылки. В этом случае вызов GC может помочь устранить утечку памяти, освободив объекты с циклическими ссылками.

Важно отметить, что вызов GC не всегда является оптимальным решением и может повлиять на производительность. Поэтому обычно рекомендуется позволить GC работать автоматически и вызывать его только в особых случаях, когда это необходимо.

#вопросы_с_собеседований
😁93
Стратегии кэширования в Laravel

Здесь подробно рассмотрены аспекты кэширования в PHP-приложениях, особенно в контексте Laravel. Обсуждаются потенциальные преимущества от применения кэширования, но также подчеркивается важность осторожного выбора из-за возможной сложности и риска устаревших данных.

В целом стратегия включает в себя оптимизацию кода перед тем, как обращаться к кэшированию. Затем рассматриваются различные уровни кэширования в Laravel:

1️⃣DNS и кэширование HTML уровня хостинга: Этот подход включает кэширование на уровне DNS и хостинга с использованием служб, таких как Cloudflare, Amazon Cloudfront или Varnish. Обсуждаются плюсы и минусы данного метода.

2️⃣Кэширование HTML в Laravel: Этот уровень предполагает кэширование HTML внутри приложения Laravel, обеспечивая больший контроль. Речь идет о пакетах, таких как Page Cache от Joseph Silber и ResponseCache от Spatie, вместе с их ограничениями.

3️⃣Встроенное кэширование в Laravel: Рассматриваются встроенные механизмы кэширования Laravel, такие как Environment Configuration Caching, Route Caching, View Caching и Laravel Cache, а также их области применения.

4️⃣Мемоизация: Представлено понятие мемоизации как кэша, действующего в течение одного запроса. Приведены примеры мемоизации на уровне класса PHP и на уровне всего приложения с использованием пакета Once от Taylor Otwell.

5️⃣Кэширование запросов к базе данных: Предлагается кэширование запросов к базе данных с использованием инструментов кэширования Laravel, с акцентом на оптимизацию запросов в первую очередь.

Обсуждается важность сброса кэша для предотвращения устаревших данных, а также рассматриваются стратегии, такие как вытеснение кэша. Подчеркивается необходимость разделения постоянного и изменчивого кэширования данных в зависимости от их жизненного цикла.
👍5🎉42
Изучение Middleware в Laravel 11

В Laravel 11, выход которого назначен на первый квартал 2024 года убирают Http Kernel.

В новой версии Laravel, файл Kernel.php больше не используется, и настройка middleware происходит через новый файл bootstrap/app.php. Этот файл теперь включает в себя вызовы методов, таких как withMiddleware(), где можно добавлять, изменять и удалять middleware для различных групп, а также использовать алиасы.

Здесь представлены примеры использования нового подхода, а также сомнения автора относительно того, стоили эти изменения усилий, учитывая увеличение кривой обучения.
4🤔3😁1
Айтишники пожаловались на снижение доходов

«Коммерсант» со ссылкой на результаты опроса Российской ассоциацией электронных коммуникаций (РАЭК). 34,9% респондентов заявили о снижении доходов.

А вы лично ощутили, что ваши доходы упали за последний год?

🤔 — да, доходы снизились
❤️ — доходы только выросли
👍 — ничего не изменилось
84🤔61👍43🌚1
Forwarded from Библиотека программиста | программирование, кодинг, разработка
🍊Подборка лучших статей «Библиотеки программиста» за декабрь: сохраняй в заметки, чтобы не пропустить #самыйсок

🛠️ 17 суперинструментов для разработки фронтенда
🏃 Самоучитель по Go для начинающих: часть 3 + часть 4
 🔟🏢 ТОП-10 российских IT-работодателей
📁💡Где программисту взять идеи для портфолио
🐍📋 F-строки в Python для интерполяции и форматирования строк
🤖 Машинное обучение: что это такое и как оно работает
🌎 ТОП-10: рейтинг лучших зарубежных работодателей в IT
🐍🤖✍️ Документирование кода и проектов на Python с помощью ChatGPT
📈 Обзор рынка труда в ИТ: III квартал 2023 года
🐍⚙️ Python или Rust: что выбрать для анализа данных и машинного обучения
🧠🧩 Зачем айтишнику психолог?
🐍🧫 Создаём игру «Жизнь» Джона Конвея на Python
👨‍🎓 14 бесплатных ресурсов, которые пригодятся каждому разработчику
✍️ Почему отсутствие технической документации убьёт ваш проект?
👨‍💻 Вопросы для подготовки к собеседованию по JavaScript. Часть 1
🎄🎁 10 абсурдных подарков программисту на Новый год
😺🐙 Как разобраться в Git: краткая инструкция для джунов
🔥 12 признаков выгорания или как понять, что вам пора в отпуск
⚙️📕 Ответы на вопросы для самопроверки из книги «Тестирование Дот Ком» Романа Савина
🏦⚠️ Борьба с ошибками разработки ПО в финтехе
4🥱3