Создавайте емейлы, которые хорошо выглядят в каждом почтовом клиенте, используя MJML.
Здесь рассказывается про новый пакет под названием spatie/mjml-php, который разработан командой Mailjet для простого преобразования MJML (Mailjet Markup Language) в HTML с использованием PHP. MJML - это язык разметки, который облегчает создание электронных писем в формате HTML, с учетом особенностей почтовых клиентов.
Здесь рассказывается про новый пакет под названием spatie/mjml-php, который разработан командой Mailjet для простого преобразования MJML (Mailjet Markup Language) в HTML с использованием PHP. MJML - это язык разметки, который облегчает создание электронных писем в формате HTML, с учетом особенностей почтовых клиентов.
freek.dev
Craft emails that look good in each email client using MJML | freek.dev
In a perfect world, email clients can render HTML as good as major browsers. Unfortunately, this is not the case. Email clients don't support modern HTML and CSS niceties and have a lot of quirks to be mindful of. Making sure an HTML email looks good in the…
👍4❤1
Создание пользовательских директив Blade в Laravel
Здесь рассматривается создание собственных директив в Laravel Blade, что является мощной функциональностью этого шаблонного движка. Эти директивы позволяют добавлять пользовательские функции и условия в представления для более гибкой и читаемой разработки.
✅Пример 1: Форматирование денег с помощью Blade директивы:
Автор начинает с создания функции formatMoney, которая форматирует денежные значения в соответствии с настройками валюты. Затем он показывает, как использовать эту функцию в представлениях.
Затем он переходит к созданию Blade директивы с именем money, которая позволяет форматировать деньги более удобным способом в представлениях. Эта директива принимает значение, которое нужно отформатировать, и вызывает formatMoney функцию для форматирования.
✅Пример 2: Создание собственной Blade директивы для проверки условий:
Автор демонстрирует, как создать пользовательскую Blade директиву для проверки условий, связанных с аутентификацией пользователя и его ролью. В данном случае, директива @customer проверяет, является ли пользователь клиентом, и открывает блок кода, если условие выполняется. Директива @endcustomer используется для закрытия этого блока.
Затем автор определяет две Blade директивы в AppServiceProvider.php, которые внутренне генерируют соответствующий PHP код для проверки условия и его завершения.
Здесь рассматривается создание собственных директив в Laravel Blade, что является мощной функциональностью этого шаблонного движка. Эти директивы позволяют добавлять пользовательские функции и условия в представления для более гибкой и читаемой разработки.
✅Пример 1: Форматирование денег с помощью Blade директивы:
Автор начинает с создания функции formatMoney, которая форматирует денежные значения в соответствии с настройками валюты. Затем он показывает, как использовать эту функцию в представлениях.
Затем он переходит к созданию Blade директивы с именем money, которая позволяет форматировать деньги более удобным способом в представлениях. Эта директива принимает значение, которое нужно отформатировать, и вызывает formatMoney функцию для форматирования.
✅Пример 2: Создание собственной Blade директивы для проверки условий:
Автор демонстрирует, как создать пользовательскую Blade директиву для проверки условий, связанных с аутентификацией пользователя и его ролью. В данном случае, директива @customer проверяет, является ли пользователь клиентом, и открывает блок кода, если условие выполняется. Директива @endcustomer используется для закрытия этого блока.
Затем автор определяет две Blade директивы в AppServiceProvider.php, которые внутренне генерируют соответствующий PHP код для проверки условия и его завершения.
koossaayy.tn
Create Custom Blade Directives in Laravel
Learn how to enhance your Laravel projects by creating custom Blade directives. Our step-by-step guide for software engineers explores the power of custom directives in Laravel, making your templates more efficient and readable.
🥱6❤1👍1
Forwarded from PHP jobs — вакансии по PHP, Symfony, Laravel
#дайджест #phpdevjob
Вакансии недели для джунов 👨🏻🏫
Junior PHP разработчик в Вебпрактик
Ростов-на-Дону. Performance-маркетинг и услуги digital-интегратора.
Подробнее
Junior Web-разработчик в Ed.Partners
Москва. Диджитал-студия.
Подробнее
Backend-разработчик в Itwis
Новосибирск. Разработка информационных бизнес-систем.
Подробнее
Junior разработчик в White Tiger Soft
Йошкар-Ола. Разработка iOS и Android приложений.
Подробнее
Программист PHP в Интертрейд
Москва. Создание световой наружной рекламы.
Подробнее
Понравились вакансии?
👍 — да
👎 — нет
Вакансии недели для джунов 👨🏻🏫
Junior PHP разработчик в Вебпрактик
Ростов-на-Дону. Performance-маркетинг и услуги digital-интегратора.
Подробнее
Junior Web-разработчик в Ed.Partners
Москва. Диджитал-студия.
Подробнее
Backend-разработчик в Itwis
Новосибирск. Разработка информационных бизнес-систем.
Подробнее
Junior разработчик в White Tiger Soft
Йошкар-Ола. Разработка iOS и Android приложений.
Подробнее
Программист PHP в Интертрейд
Москва. Создание световой наружной рекламы.
Подробнее
Понравились вакансии?
👍 — да
👎 — нет
rostov.hh.ru
Вакансия Junior PHP разработчик в Ростове-на-Дону, работа в компании Вебпрактик (вакансия в архиве c 21 сентября 2023)
Зарплата: не указана. Ростов-на-Дону. Требуемый опыт: 1–3 года. Полная занятость. Дата публикации: 18.09.2023.
❤1👍1👾1
#хочу_спросить
Задавайте любые вопросы о программировании и получайте ответы от пользователей. В комментариях под постом укажите #язык, #стек и/или #библиотеку, по которым задаете вопрос.
Задавайте любые вопросы о программировании и получайте ответы от пользователей. В комментариях под постом укажите #язык, #стек и/или #библиотеку, по которым задаете вопрос.
❤1👍1
Интерфейсы или абстрактные классы
Статья обсуждает различия между интерфейсами и абстрактными классами. Она поднимает несколько важных аспектов и рассматривает, когда следует использовать интерфейсы и абстрактные классы, а также какие преимущества они могут предоставить в разработке программного кода.
Вот основные моменты, которые статья затрагивает:
✔️Интерфейсы и абстрактные классы как контракты: Интерфейсы и абстрактные классы представляют собой способы определения контрактов между классами. Классы, реализующие интерфейсы или расширяющие абстрактные классы, обязаны предоставить определенные методы.
✔️Выбор между интерфейсами и абстрактными классами: Выбор зависит от того, нужно ли вам предоставить некоторую функциональность (в этом случае абстрактный класс может быть полезным) или просто гарантировать, что классы будут иметь определенное поведение (в этом случае интерфейсы подходят лучше).
✔️Общие сходства и различия: В заключении статьи отмечается, что интерфейсы и абстрактные классы имеют много общих черт, но они уделяют внимание разным аспектам программирования. Абстрактные классы ориентированы на предоставление базовой реализации, тогда как интерфейсы фокусируются на определении контрактов для разных классов.
Статья обсуждает различия между интерфейсами и абстрактными классами. Она поднимает несколько важных аспектов и рассматривает, когда следует использовать интерфейсы и абстрактные классы, а также какие преимущества они могут предоставить в разработке программного кода.
Вот основные моменты, которые статья затрагивает:
✔️Интерфейсы и абстрактные классы как контракты: Интерфейсы и абстрактные классы представляют собой способы определения контрактов между классами. Классы, реализующие интерфейсы или расширяющие абстрактные классы, обязаны предоставить определенные методы.
✔️Выбор между интерфейсами и абстрактными классами: Выбор зависит от того, нужно ли вам предоставить некоторую функциональность (в этом случае абстрактный класс может быть полезным) или просто гарантировать, что классы будут иметь определенное поведение (в этом случае интерфейсы подходят лучше).
✔️Общие сходства и различия: В заключении статьи отмечается, что интерфейсы и абстрактные классы имеют много общих черт, но они уделяют внимание разным аспектам программирования. Абстрактные классы ориентированы на предоставление базовой реализации, тогда как интерфейсы фокусируются на определении контрактов для разных классов.
DEV Community
Interfaces or abstract classes?
Working with objects can be tough sometimes, especially when you don't know which structure you need...
👍6❤4
Есть ли разница между self и this в PHP?
Главная разница между $this и self в PHP заключается в том, что $this используется для обращения к методам и свойствам текущего объекта, а self – для обращения к статическим методам, свойствам и константам класса.
Кроме того, $this может быть использован только в контексте текущего объекта, а self – в контексте самого класса и его потомков. Также стоит отметить, что $this является нестатическим контекстом, а self – статическим.
Еще одним отличием между $this и self является различие в их использовании в конструкторе класса. $this используется для присваивания значений свойствам экземпляра, тогда как self можно использовать для определения значений свойств самого класса.
#вопросы_с_собеседований
Главная разница между $this и self в PHP заключается в том, что $this используется для обращения к методам и свойствам текущего объекта, а self – для обращения к статическим методам, свойствам и константам класса.
Кроме того, $this может быть использован только в контексте текущего объекта, а self – в контексте самого класса и его потомков. Также стоит отметить, что $this является нестатическим контекстом, а self – статическим.
Еще одним отличием между $this и self является различие в их использовании в конструкторе класса. $this используется для присваивания значений свойствам экземпляра, тогда как self можно использовать для определения значений свойств самого класса.
#вопросы_с_собеседований
👍15🥱15❤1
Как оптимизировать производительность PHP в Google Cloud Run
Эта статья об оптимизации производительности API, написанного на PHP 7.4 и Laravel 8.0, развернутого на Cloud Run с использованием контейнерного образа с Nginx и PHP-FPM, а также с базой данных MySQL на Cloud SQL (управляемой базой данных на Google Cloud). Автор статьи предоставляет ряд советов и методов для улучшения времени ответа API и обработки большого количества одновременных пользователей.
Эта статья об оптимизации производительности API, написанного на PHP 7.4 и Laravel 8.0, развернутого на Cloud Run с использованием контейнерного образа с Nginx и PHP-FPM, а также с базой данных MySQL на Cloud SQL (управляемой базой данных на Google Cloud). Автор статьи предоставляет ряд советов и методов для улучшения времени ответа API и обработки большого количества одновременных пользователей.
Luca Cavallin
How to Optimize PHP Performance on Google Cloud Run | Blog
Discover ways to enhance PHP performance on Google Cloud Run.
👍4❤1🥱1
Интернет из PHP
PHP большой. Тролли могут заявлять о его почти уверенной «смерти» до тех пор, пока рак на горе не свистнет, но факт в том, что в Интернет работает на PHP. Доказательства ошеломляющие.
Здесь эти доказательства и представлены.
PHP большой. Тролли могут заявлять о его почти уверенной «смерти» до тех пор, пока рак на горе не свистнет, но факт в том, что в Интернет работает на PHP. Доказательства ошеломляющие.
Здесь эти доказательства и представлены.
❤17🥱3🌚1
Как относитесь к тестам? Любите ли вы их писать? Или считаете эту работу слишком скучной и бесполезной?⬇️⬇️⬇️
❤18🥱4🌚2
Шаблон проектирования Интерпретатор в PHP 8
Данная статья представляет собой руководство по использованию шаблона проектирования "Интерпретатор" в разработке программного обеспечения, используя PHP 8. Шаблон "Интерпретатор" используется для интерпретации предложений на языке, и он полезен, когда нужно создавать инструменты, которые интерпретируют или компилируют языки, предоставляя структурированный подход к переводу данных из одной формы в другую.
Создание простого средства вычисления математических выражений состоит из следующих шагов:
1️⃣Интерфейс выражений (Expression Interface): Этот интерфейс определяет метод interpret, который будет интерпретировать различные виды выражений.
2️⃣Терминальные выражения (Terminal Expressions): Эти выражения представляют основные элементы, возвращающие значения. В данной статье они представлены классом Number, который представляет числа в математических выражениях.
3️⃣Нетерминальные выражения (Non-terminal Expressions): Эти выражения представляют операции и используют терминальные выражения для выполнения своих задач. В данной статье они представлены классами Add и Subtract, которые выполняют соответственно сложение и вычитание.
4️⃣Клиентский код: Здесь создаются объекты для чисел и операций, и они интерпретируются для получения результатов.
Данная статья представляет собой руководство по использованию шаблона проектирования "Интерпретатор" в разработке программного обеспечения, используя PHP 8. Шаблон "Интерпретатор" используется для интерпретации предложений на языке, и он полезен, когда нужно создавать инструменты, которые интерпретируют или компилируют языки, предоставляя структурированный подход к переводу данных из одной формы в другую.
Создание простого средства вычисления математических выражений состоит из следующих шагов:
1️⃣Интерфейс выражений (Expression Interface): Этот интерфейс определяет метод interpret, который будет интерпретировать различные виды выражений.
2️⃣Терминальные выражения (Terminal Expressions): Эти выражения представляют основные элементы, возвращающие значения. В данной статье они представлены классом Number, который представляет числа в математических выражениях.
3️⃣Нетерминальные выражения (Non-terminal Expressions): Эти выражения представляют операции и используют терминальные выражения для выполнения своих задач. В данной статье они представлены классами Add и Subtract, которые выполняют соответственно сложение и вычитание.
4️⃣Клиентский код: Здесь создаются объекты для чисел и операций, и они интерпретируются для получения результатов.
DEV Community
Design Patterns in PHP 8: Interpreter
Hello, fellow developers!🧑🏼💻 In the realm of software development, design patterns play a pivotal...
🥱4❤2👍2🌚1
🤖📄 ChatGPT: эффективная суммаризация с помощью LLM
В этой статье разберём суммаризацию с помощью LLM на примере обработки отзывов в e-commerce.
В этой статье разберём суммаризацию с помощью LLM на примере обработки отзывов в e-commerce.
👾4❤1👍1
PHP и Laravel дайджест новостей за август 2023 года
Краткий обзор новостей из мира PHP и Laravel за август 2023 г.
Краткий обзор новостей из мира PHP и Laravel за август 2023 г.
Хабр
PHP и Laravel дайджест новостей за август 2023 года
Всем привет! Краткий обзор новостей из мира PHP и Laravel за август 2023 г. PHP Дайджест Вышли PHP 8.0.30, PHP 8.1.22 и PHP 8.2.9 В этих выпусках исправлена уязвимость при загрузке внешних сущностей в...
👍4❤1
Все способы обработки нулевых значений в PHP
Эта статья рассматривает способы работы с нулевыми значениями в PHP. В ней рассматриваются следующие методы обработки нулевых значений:
✔️Функция is_null(): Эта функция используется для проверки, является ли переменная нулевой (null). Она возвращает true, если переменная равна null, и false в противном случае.
✔️Оператор нулевого объединения (??): Оператор нулевого объединения используется для проверки переменной на null. Он возвращает значение переменной, если оно не является null, и в противном случае возвращает значение второго операнда.
✔️Оператор присваивания, объединяющий нулевые значения (??=): Этот оператор используется для присвоения значения переменной, если она равна null. Он присваивает значение правого операнда левому операнду, если левый операнд равен null.
✔️Нулевой безопасный оператор (?->): Нулевой безопасный оператор используется для безопасного вызова метода или свойства объекта, если объект не равен null. Он возвращает значение метода или null, если объект равен null.
✔️Тернарный оператор: Тернарный оператор может использоваться для проверки переменной на null, но он считается менее читаемым и более длинным в сравнении с оператором нулевого объединения.
✔️Обнуляемые типы: Вы можете объявить параметры функции и типы возвращаемых значений, допускающие null, путем добавления символа ? перед типом. Это позволяет явно указать, что переменная или возвращаемое значение может быть null.
✔️Null как отдельный тип: Начиная с PHP 8.2, можно использовать null как отдельный тип данных. Это означает, что можно объявить переменные, параметры функций и типы возвращаемых значений как null, и они будут принимать только значение null.
Эта статья рассматривает способы работы с нулевыми значениями в PHP. В ней рассматриваются следующие методы обработки нулевых значений:
✔️Функция is_null(): Эта функция используется для проверки, является ли переменная нулевой (null). Она возвращает true, если переменная равна null, и false в противном случае.
✔️Оператор нулевого объединения (??): Оператор нулевого объединения используется для проверки переменной на null. Он возвращает значение переменной, если оно не является null, и в противном случае возвращает значение второго операнда.
✔️Оператор присваивания, объединяющий нулевые значения (??=): Этот оператор используется для присвоения значения переменной, если она равна null. Он присваивает значение правого операнда левому операнду, если левый операнд равен null.
✔️Нулевой безопасный оператор (?->): Нулевой безопасный оператор используется для безопасного вызова метода или свойства объекта, если объект не равен null. Он возвращает значение метода или null, если объект равен null.
✔️Тернарный оператор: Тернарный оператор может использоваться для проверки переменной на null, но он считается менее читаемым и более длинным в сравнении с оператором нулевого объединения.
✔️Обнуляемые типы: Вы можете объявить параметры функции и типы возвращаемых значений, допускающие null, путем добавления символа ? перед типом. Это позволяет явно указать, что переменная или возвращаемое значение может быть null.
✔️Null как отдельный тип: Начиная с PHP 8.2, можно использовать null как отдельный тип данных. Это означает, что можно объявить переменные, параметры функций и типы возвращаемых значений как null, и они будут принимать только значение null.
Amit Merchant - A blog on PHP, JavaScript, and more
All the ways to handle null values in PHP
Null is a special data type in PHP that represents a variable with no value. A variable is considered to be null if:
❤15👍5🥱1
Организация кода в Laravel. Личный опыт
В статье автор расскажет, как организовать свой код в проектах, использующих Laravel. Он решил структурировать, с чем удалось познакомиться после перехода в мир фреймворков из мира Битрикс. Статья адресована начинающим разработчикам.
В статье автор расскажет, как организовать свой код в проектах, использующих Laravel. Он решил структурировать, с чем удалось познакомиться после перехода в мир фреймворков из мира Битрикс. Статья адресована начинающим разработчикам.
Хабр
Организация кода в Laravel. Личный опыт
Hola Amigos! На связи Евгений Шмулевский, PHP-разработчик в Amiga. Начал заниматься программированием с 2001 года, привет Basic и Express/Turbo Pascal. Веб-разработкой — с 2011 года, а профессионально...
👍6❤3🤔2🥱2
4 способа вызова Python из PHP
Здесь предоставлено несколько способов вызова скрипта Python из PHP, каждый из которых имеет свой собственный подход и область применения:
1. Командная строка (CLI)
2. CURL
3. FETCH (HTML/JavaScript)
4. Сокет
Каждый из этих методов может быть полезным в зависимости от вашей конкретной задачи и требований.
Здесь предоставлено несколько способов вызова скрипта Python из PHP, каждый из которых имеет свой собственный подход и область применения:
1. Командная строка (CLI)
2. CURL
3. FETCH (HTML/JavaScript)
4. Сокет
Каждый из этих методов может быть полезным в зависимости от вашей конкретной задачи и требований.
🥱12❤4👍1
🎓💼 ТОП-9 не самых очевидных компаний для стажировки в ИТ
Везде просят опыт работы... Но где его взять? Как раз об этом сейчас и расскажем!
Читать
Везде просят опыт работы... Но где его взять? Как раз об этом сейчас и расскажем!
Читать
❤3👍1
Чем отличаются ключевые слова: include и require?
include и require используются для включения содержимого другого файла в текущий PHP-скрипт.
Основное различие между ними заключается в том, как они обрабатывают ошибки:
include выдаст предупреждение (warning) в случае ошибки и продолжит выполнение скрипта.
require выдаст фатальную ошибку (fatal error) в случае ошибки и остановит выполнение скрипта.
Обычно require используется там, где подключение файла является критически важным для работы скрипта, и его отсутствие может вызвать серьезные проблемы.
#вопросы_с_собеседований
include и require используются для включения содержимого другого файла в текущий PHP-скрипт.
Основное различие между ними заключается в том, как они обрабатывают ошибки:
include выдаст предупреждение (warning) в случае ошибки и продолжит выполнение скрипта.
require выдаст фатальную ошибку (fatal error) в случае ошибки и остановит выполнение скрипта.
Обычно require используется там, где подключение файла является критически важным для работы скрипта, и его отсутствие может вызвать серьезные проблемы.
#вопросы_с_собеседований
🥱15❤9👍4
Использование EntityRepository Doctrine в качестве службы — плохая идея.
Здесь рассматриваются последствия использования EntityRepository Doctrine в качестве сервиса в проектах Symfony и объясняется, почему это может привести к проблемам. Основное внимание уделяется разнице между использованием EntityRepository и ServiceEntityRepository в Symfony и как это влияет на поведение менеджера Doctrine EntityManager.
Здесь рассматриваются последствия использования EntityRepository Doctrine в качестве сервиса в проектах Symfony и объясняется, почему это может привести к проблемам. Основное внимание уделяется разнице между использованием EntityRepository и ServiceEntityRepository в Symfony и как это влияет на поведение менеджера Doctrine EntityManager.
1823.pl
Avoiding Pitfalls with Doctrine ORM: Using EntityRepository as a service is a bad idea - d1823.pl
Why Doctrine's ServiceEntityRepository, and not EntityRepository, should be only be ever used as a service
👍13❤2
Первый взгляд на MoonShine
Автор статьи, Данил Щуцкий, рассказывает о проекте MoonShine - это панель администрирования, разработанная для использования в проектах на Laravel.
MoonShine - это open-source проект, разрабатываемый совместно с участниками сообщества CutCode. Основная цель проекта - создать административную панель, которая была бы максимально простой для новичков в разработке, но в то же время функциональной и настраиваемой для опытных разработчиков.
Для работы с MoonShine необходимы PHP версии 8.0 и выше, а также Laravel версии 9.0 и выше.
Автор предоставляет обзор основных функций MoonShine, включая страницу авторизации, стандартные операции CRUD, возможности фильтрации данных и декораций, гибкую настройку форм, использование сетки с колонками и создание дашбордов.
Однако также упоминаются дополнительные возможности MoonShine, такие как создание графиков, глобальный поиск с использованием пакета Algolia search for MoonShine, работа с правами доступа через Laravel policy, центр уведомлений, аутентификация через Laravel Socialite, локализация и кастомные поля.
Автор статьи, Данил Щуцкий, рассказывает о проекте MoonShine - это панель администрирования, разработанная для использования в проектах на Laravel.
MoonShine - это open-source проект, разрабатываемый совместно с участниками сообщества CutCode. Основная цель проекта - создать административную панель, которая была бы максимально простой для новичков в разработке, но в то же время функциональной и настраиваемой для опытных разработчиков.
Для работы с MoonShine необходимы PHP версии 8.0 и выше, а также Laravel версии 9.0 и выше.
Автор предоставляет обзор основных функций MoonShine, включая страницу авторизации, стандартные операции CRUD, возможности фильтрации данных и декораций, гибкую настройку форм, использование сетки с колонками и создание дашбордов.
Однако также упоминаются дополнительные возможности MoonShine, такие как создание графиков, глобальный поиск с использованием пакета Algolia search for MoonShine, работа с правами доступа через Laravel policy, центр уведомлений, аутентификация через Laravel Socialite, локализация и кастомные поля.
Хабр
Первый взгляд на MoonShine
Меня зовут Данил Щуцкий, я автор проекта CutCode. В этой статье я хотел рассказать вам о MoonShine — панели для администрирования для ваших проектов на Laravel. Над...
👍10😁3❤1