Все способы обработки нулевых значений в 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
Атрибут WithoutRelations в Laravel 10.19 предоставляет способ улучшить чистоту кода, особенно при создании событий и задач в очереди. Обычно, чтобы избежать загрузки лишних данных из базы данных, разработчики использовали метод withoutRelations() для каждой связи внутри конструктора класса. Теперь с помощью атрибута WithoutRelations можно значительно упростить этот процесс.
Использование WithoutRelations помогает избежать лишней нагрузки на базу данных и повышает производительность кода, особенно в событиях и задачах, поставленных в очередь. Этот атрибут может быть применен к любому свойству класса, использующему SerializesModels, таким как Events или Jobs.
Использование WithoutRelations помогает избежать лишней нагрузки на базу данных и повышает производительность кода, особенно в событиях и задачах, поставленных в очередь. Этот атрибут может быть применен к любому свойству класса, использующему SerializesModels, таким как Events или Jobs.
cosmastech
How WithoutRelations can keep your code clean
How to make use of the new WithoutRelations attribute on jobs and events.
❤7
Forwarded from PHP jobs — вакансии по PHP, Symfony, Laravel
#дайджест #phpdevjob
Вакансии недели для Москвы 👨🏻🏫
PHP-разработчик в Amex Development
Москва. Создание современного ПО.
Подробнее
Стажер-разработчик PHP в Samokat.tech
Москва. Заказы в сфере e-grocery.
Подробнее
Разработчик PHP в Лин Айти
Москва. Построение ИТ-структур.
Подробнее
Backend Developer PHP в ТолкФинанс
Москва. Разработка площадок и ПО.
Подробнее
PHP-разработчик в Maxmoll
Москва. Федеральная сеть по продаже инновационной электроники.
Подробнее
Понравились вакансии?
👍 — да
👎 — нет
Вакансии недели для Москвы 👨🏻🏫
PHP-разработчик в Amex Development
Москва. Создание современного ПО.
Подробнее
Стажер-разработчик PHP в Samokat.tech
Москва. Заказы в сфере e-grocery.
Подробнее
Разработчик PHP в Лин Айти
Москва. Построение ИТ-структур.
Подробнее
Backend Developer PHP в ТолкФинанс
Москва. Разработка площадок и ПО.
Подробнее
PHP-разработчик в Maxmoll
Москва. Федеральная сеть по продаже инновационной электроники.
Подробнее
Понравились вакансии?
👍 — да
👎 — нет
hh.ru
Вакансия PHP-разработчик (удаленно) можно работать из-за границы! в Москве, работа в компании Amex Development (вакансия в архиве…
Зарплата: от 230000 ₽. Москва. Требуемый опыт: 3–6 лет. Полная занятость. Дата публикации: 04.10.2023.
👍6⚡2
Лучший способ просить повышение
Anonymous Poll
19%
Принести контр-оффер
6%
Усердно работать, чтобы заметили
6%
Не знаю
32%
Сменить работу
6%
Свой бизнес
17%
Показать свою ценность на этой работе
11%
Обратиться к высшему начальнику
3%
Свой вариант
❤2
Как развернуть проект Symfony в продакшн
Статья предоставляет инструкции по развертыванию приложения Symfony на двух различных облачных платформах: DigitalOcean и Amazon Web Services (AWS).
В случае DigitalOcean, статья описывает шаги, необходимые для создания сервера и настройки его окружения для развертывания Symfony-приложения.
В случае AWS, статья объясняет, как настроить виртуальную машину (EC2-инстанс), базу данных и другие необходимые компоненты для развертывания Symfony-приложения.
Статья предоставляет инструкции по развертыванию приложения Symfony на двух различных облачных платформах: DigitalOcean и Amazon Web Services (AWS).
В случае DigitalOcean, статья описывает шаги, необходимые для создания сервера и настройки его окружения для развертывания Symfony-приложения.
В случае AWS, статья объясняет, как настроить виртуальную машину (EC2-инстанс), базу данных и другие необходимые компоненты для развертывания Symfony-приложения.
Elvanco Blog
How to Deploy Symfony Project to Production?
Symfony is a PHP web development framework that enables developers to create robust and scalable web applications. How to deploy Symfony on server in 2024?
👍6❤2
Что такое инкапсуляция/наследование/полиморфизм?
Инкапсуляция. Это механизм, который объединяет данные и методы, манипулирующие этими данными, и защищает их от внешнего вмешательства или неправильного использования. Когда методы и данные объединяются таким способом, создается объект. Т.е. переменные состояния объекта скрыты от внешнего мира. Изменение состояния объекта (его переменных) возможно ТОЛЬКО с помощью его собственных методов. Можно сказать, что инкапсуляция подразумевает под собой сокрытие данных, что позволяет эти данные защитить.
Наследование. Это процесс, посредством которого один объект может наследовать свойства другого объекта и добавлять к ним черты, характерные только для него.
Полиморфизм. Это свойство, которое позволяет одно и то же имя использовать для решения нескольких технически разных задач. Проще говоря, концепцией полиморфизма является идея “один интерфейс, множество реализаций”. Это означает, что можно создать общий интерфейс для группы близких по смыслу действий.
#вопросы_с_собеседований
Инкапсуляция. Это механизм, который объединяет данные и методы, манипулирующие этими данными, и защищает их от внешнего вмешательства или неправильного использования. Когда методы и данные объединяются таким способом, создается объект. Т.е. переменные состояния объекта скрыты от внешнего мира. Изменение состояния объекта (его переменных) возможно ТОЛЬКО с помощью его собственных методов. Можно сказать, что инкапсуляция подразумевает под собой сокрытие данных, что позволяет эти данные защитить.
Наследование. Это процесс, посредством которого один объект может наследовать свойства другого объекта и добавлять к ним черты, характерные только для него.
Полиморфизм. Это свойство, которое позволяет одно и то же имя использовать для решения нескольких технически разных задач. Проще говоря, концепцией полиморфизма является идея “один интерфейс, множество реализаций”. Это означает, что можно создать общий интерфейс для группы близких по смыслу действий.
#вопросы_с_собеседований
👍16🥱13
Список просмотров страницы в реальном времени с помощью Livewire
Статья рассказывает о решении проблемы взаимодействия операторов в системе электронной коммерции, где несколько операторов могут работать с одним заказом. Исходное решение было автоматической системой распределения заказов между операторами, но оно не учитывало отпуска операторов и сложность заказов. В статье предлагается решение под названием "On this page", которое позволяет операторам видеть, если кто-то уже просматривает заказ, и избегать пересечения работы.
Решение использует Laravel, Redis и Livewire. Оно отслеживает, какие страницы просматриваются операторами, и отображает список пользователей, просматривающих данную страницу. В статье предоставлен код для создания компонента Livewire "On this page" и шаблона для отображения пользователей.
Статья рассказывает о решении проблемы взаимодействия операторов в системе электронной коммерции, где несколько операторов могут работать с одним заказом. Исходное решение было автоматической системой распределения заказов между операторами, но оно не учитывало отпуска операторов и сложность заказов. В статье предлагается решение под названием "On this page", которое позволяет операторам видеть, если кто-то уже просматривает заказ, и избегать пересечения работы.
Решение использует Laravel, Redis и Livewire. Оно отслеживает, какие страницы просматриваются операторами, и отображает список пользователей, просматривающих данную страницу. В статье предоставлен код для создания компонента Livewire "On this page" и шаблона для отображения пользователей.
ahmedash.dev
Livewire Real Time Presence
Exploring Laravel and its features deeply. Making complex ideas easy to understand.
❤5👍5
Здесь рассказывается об опыте разработчика, который столкнулся с проблемой производительности в своем приложении, использующем Symfony/Doctrine и PostgreSQL для работы с финансовыми операциями и тегами. Проблема возникла из-за медленных запросов, связанных с агрегацией данных по тегам.
Автор рассматривает альтернативные решения и выбирает ClickHouse для агрегации больших объемов данных, избегая дорогостоящих джойнов. Он также сохраняет PostgreSQL для операций, которые не требуют агрегации больших объемов данных.
Решение помогло улучшить производительность и оставить ClickHouse в резерве для будущих увеличений нагрузки.
Автор рассматривает альтернативные решения и выбирает ClickHouse для агрегации больших объемов данных, избегая дорогостоящих джойнов. Он также сохраняет PostgreSQL для операций, которые не требуют агрегации больших объемов данных.
Решение помогло улучшить производительность и оставить ClickHouse в резерве для будущих увеличений нагрузки.
Хабр
Вы вообще нормальн… нормализованный??
Сказ о том, как нормализация данных завела производительность many-to-many в Postgres в тупик, как это зло было повержено, и как тут нам помог Clickhouse. Порой бывают ситуации, когда стоит посмотреть...
👍5⚡1🥱1
Как бы вы импортировали 50-гигабайтный файл xml в базу данных?
👍5🥱2
В статье рассматривается проблема написания тестов для класса, который использует пакет Browsershot для генерации PDF-файлов. Автор начинает с введения в необходимость создания приложений, способных экспортировать отчеты или страницы в формат PDF, и упоминает ранее использованные библиотеки для этой задачи. Затем он представляет Browsershot как один из лучших пакетов для генерации PDF, обосновывая его простотой настройки.
Однако основная проблема, с которой сталкиваются разработчики, заключается в написании тестов для классов, использующих Browsershot. Тесты, выполняемые с помощью Browsershot, могут быть медленными и зависимыми от интернет-соединения. Это может вызвать проблемы, если есть несколько классов, использующих Browsershot, или если нет доступа к интернету. Кроме того, это может увеличить затраты на тестирование, если используется платная услуга для тестирования.
Автор предлагает решение этой проблемы с использованием библиотеки Mockery для имитации поведения класса и проверки вызовов его методов. Он также обсуждает сложности, связанные с мокированием статических методов в Browsershot, и предлагает альтернативный метод с использованием инъекции зависимостей. Это позволяет сделать мокирование более эффективным и улучшить тестируемость класса.
Однако основная проблема, с которой сталкиваются разработчики, заключается в написании тестов для классов, использующих Browsershot. Тесты, выполняемые с помощью Browsershot, могут быть медленными и зависимыми от интернет-соединения. Это может вызвать проблемы, если есть несколько классов, использующих Browsershot, или если нет доступа к интернету. Кроме того, это может увеличить затраты на тестирование, если используется платная услуга для тестирования.
Автор предлагает решение этой проблемы с использованием библиотеки Mockery для имитации поведения класса и проверки вызовов его методов. Он также обсуждает сложности, связанные с мокированием статических методов в Browsershot, и предлагает альтернативный метод с использованием инъекции зависимостей. Это позволяет сделать мокирование более эффективным и улучшить тестируемость класса.
DEV Community
Mocking Browsershot library in your tests
In our journey as developers, we often find ourselves creating applications that need to export...
👍3❤1
Видео: PHP больше не отстой
PHP в 2023 году сильно отличается от PHP в 2012, в видео рассказывается о фишках, которые появились за это время, благодаря которым PHP не только не теряет популярность, а наоборот, становится еще более востребованным.
PHP в 2023 году сильно отличается от PHP в 2012, в видео рассказывается о фишках, которые появились за это время, благодаря которым PHP не только не теряет популярность, а наоборот, становится еще более востребованным.
YouTube
PHP doesn't suck (anymore)
PHP in 2023 is very different than PHP in 2012. Let's run through some of the changes!
Looking for PHP jobs or looking to hire PHP devs? Check out Larajobs: https://larajobs.com/?partner=108
Follow me:
Twitter: https://twitter.com/aarondfrancis
LinkedIn:…
Looking for PHP jobs or looking to hire PHP devs? Check out Larajobs: https://larajobs.com/?partner=108
Follow me:
Twitter: https://twitter.com/aarondfrancis
LinkedIn:…
💯15🌚6👍3❤1🥱1
Новый #дайджест новостей по PHP за неделю:
🔎 Выпущена версия PhpStorm 2023.2.2, включающая множество исправлений ошибок и улучшений качества работы.
🔎Выпущена версия Laravel 10.24 — это обновление, включающее обновления поддельных заданий, помощник позиции строки, улучшения в подборе имени таблицы миграции и многое другое.
🔎PHP 8.3.0 RC 2 доступен для тестирования — Это второй кандидат на выпуск, продолжающий цикл выпуска PHP 8.3, примерный план которого указан в PHP-вики.
🔎Неделя Symfony № 872 (11–17 сентября 2023 г.) — На этой неделе Symfony объявила об окончании поддержки Twig 2 и выпуске версии безопасности для пакета symfony/ux-autocomplete.
🔎 Выпущена версия PhpStorm 2023.2.2, включающая множество исправлений ошибок и улучшений качества работы.
🔎Выпущена версия Laravel 10.24 — это обновление, включающее обновления поддельных заданий, помощник позиции строки, улучшения в подборе имени таблицы миграции и многое другое.
🔎PHP 8.3.0 RC 2 доступен для тестирования — Это второй кандидат на выпуск, продолжающий цикл выпуска PHP 8.3, примерный план которого указан в PHP-вики.
🔎Неделя Symfony № 872 (11–17 сентября 2023 г.) — На этой неделе Symfony объявила об окончании поддержки Twig 2 и выпуске версии безопасности для пакета symfony/ux-autocomplete.
👏5❤1👍1
Понимание жизненного цикла запроса, сервисного контейнера и фасадов
Здесь обсуждается важность понимания того, как работает приложение Laravel, и показан упрощенный обзор ключевых концепций. Она начинается с глоссария, где объясняются термины, такие как "Bootstrap" и "Kernel" (ядро).
В статье описывается жизненный цикл запроса в Laravel, начиная с создания экземпляра приложения, регистрации поставщиков услуг и передачи запроса загруженному приложению.
Выделено, что точкой входа в приложение Laravel является файл public/index.php, который загружает Composer для загрузки классов и извлекает экземпляр приложения Laravel. Затем запросы направляются либо в HTTP-ядро, либо в консольное ядро, которые действуют как центральные точки для обработки запросов и выполнения промежуточного программного обеспечения.
В статье также подчеркивается роль сервис-провайдеров в инициализации компонентов фреймворка, с упоминанием RouteServiceProvider как ключевого элемента для маршрутизации. Промежуточное программное обеспечение играет роль в проверке и направлении входящих запросов.
В статье также упоминается сервисный контейнер Laravel, который управляет зависимостями классов, а также поставщики услуг, которые могут быть добавлены в файл конфигурации.
Фасады описываются как удобный способ доступа к сервисам, и предоставлен фрагмент кода из файла маршрутов.
Здесь обсуждается важность понимания того, как работает приложение Laravel, и показан упрощенный обзор ключевых концепций. Она начинается с глоссария, где объясняются термины, такие как "Bootstrap" и "Kernel" (ядро).
В статье описывается жизненный цикл запроса в Laravel, начиная с создания экземпляра приложения, регистрации поставщиков услуг и передачи запроса загруженному приложению.
Выделено, что точкой входа в приложение Laravel является файл public/index.php, который загружает Composer для загрузки классов и извлекает экземпляр приложения Laravel. Затем запросы направляются либо в HTTP-ядро, либо в консольное ядро, которые действуют как центральные точки для обработки запросов и выполнения промежуточного программного обеспечения.
В статье также подчеркивается роль сервис-провайдеров в инициализации компонентов фреймворка, с упоминанием RouteServiceProvider как ключевого элемента для маршрутизации. Промежуточное программное обеспечение играет роль в проверке и направлении входящих запросов.
В статье также упоминается сервисный контейнер Laravel, который управляет зависимостями классов, а также поставщики услуг, которые могут быть добавлены в файл конфигурации.
Фасады описываются как удобный способ доступа к сервисам, и предоставлен фрагмент кода из файла маршрутов.
DEV Community
Understanding the Request Lifecycle, Service Container, and Facades
This topic may seem a bit advanced to me, but I believe it's crucial to grasp how a Laravel...
👍9🥱3❤2🤔1