Профилирование PHP (Laravel) приложений с xhprof.
Здесь вы научитесь выявлять узкие места(ботлнеки) в ваших приложениях. Основное внимание уделено профилированию кода, что помогает определить неэффективные участки кода. В статье приводится пример использования инструментов профилирования, таких как xhprof и Buggregator, которые позволяют анализировать производительность и выявлять проблемные зоны.
Здесь вы научитесь выявлять узкие места(ботлнеки) в ваших приложениях. Основное внимание уделено профилированию кода, что помогает определить неэффективные участки кода. В статье приводится пример использования инструментов профилирования, таких как xhprof и Buggregator, которые позволяют анализировать производительность и выявлять проблемные зоны.
Хабр
Профилирование PHP (Laravel) приложений с xhprof. Учимся искать ботлнеки
Привет, PHP-шники! Вам знакомо то чувство, когда ваш PHP-код отрабатывает за дофига миллисекунд, а иногда и секунд, и вы не можете понять, в чём дело и где тот говнокод, который я (или не я, а мой...
Что такое type hinting, как работает, зачем нужен?
Type hinting в PHP — это возможность указывать ожидаемые или допустимые типы данных для параметров функций и функций-обратного вызова (callback). Он используется для определения типов аргументов функций и возвращаемых значений.
Type hinting выполняется при помощи объявления типа данных перед именем параметра функции или функции-обратного вызова.
В данном случае мы указываем, что параметры $a и $b должны быть целочисленного типа (int), а функция должна возвращать тоже целочисленное значение. Если будет передан несоответствующий тип данных, то PHP выдаст ошибку.
Type hinting в PHP имеет следующие преимущества и цели:
1. Увеличение надежности и безопасности кода: Type hinting позволяет контролировать типы данных, которые принимаются и возвращаются функциями, что может помочь предотвратить ошибки типизации и некорректное использование функций.
2. Улучшение понимания кода: Type hinting делает код более читаемым и понятным, особенно при работе в команде. Видя ожидаемые типы данных в объявлениях функций, другие разработчики легко могут понять, какие данные ожидаются для правильного использования функции.
3. Интеграция со средами разработки: Многие среды разработки, такие как PhpStorm, могут использовать информацию о типах данных для предоставления подсказок и автодополнения, что упрощает разработку и ускоряет процесс написания кода.
Однако, следует отметить, что type hinting в PHP не является строгой типизацией. Если передать аргумент, не соответствующий указанному типу, PHP будет пытаться выполнить приведение типов, что может привести к непредсказуемому поведению программы.
#вопросы_с_собеседований
Type hinting в PHP — это возможность указывать ожидаемые или допустимые типы данных для параметров функций и функций-обратного вызова (callback). Он используется для определения типов аргументов функций и возвращаемых значений.
Type hinting выполняется при помощи объявления типа данных перед именем параметра функции или функции-обратного вызова.
В данном случае мы указываем, что параметры $a и $b должны быть целочисленного типа (int), а функция должна возвращать тоже целочисленное значение. Если будет передан несоответствующий тип данных, то PHP выдаст ошибку.
Type hinting в PHP имеет следующие преимущества и цели:
1. Увеличение надежности и безопасности кода: Type hinting позволяет контролировать типы данных, которые принимаются и возвращаются функциями, что может помочь предотвратить ошибки типизации и некорректное использование функций.
2. Улучшение понимания кода: Type hinting делает код более читаемым и понятным, особенно при работе в команде. Видя ожидаемые типы данных в объявлениях функций, другие разработчики легко могут понять, какие данные ожидаются для правильного использования функции.
3. Интеграция со средами разработки: Многие среды разработки, такие как PhpStorm, могут использовать информацию о типах данных для предоставления подсказок и автодополнения, что упрощает разработку и ускоряет процесс написания кода.
Однако, следует отметить, что type hinting в PHP не является строгой типизацией. Если передать аргумент, не соответствующий указанному типу, PHP будет пытаться выполнить приведение типов, что может привести к непредсказуемому поведению программы.
#вопросы_с_собеседований
😁8👍4❤1
Использование фабрик Eloquent с провайдеров данных PHPUnit
Существует несколько способов работы с фабриками Laravel в функциональных тестах, например, создание модели во время setUp(), когда вы хотите использовать ее для нескольких тестов, или непосредственно в отдельном тестовом примере. Если же вы хотите провести тестирование с использованием различных данных, вам лучше обратиться к провайдерам данных PHPUnit с моделями Eloquent.
Существует несколько способов работы с фабриками Laravel в функциональных тестах, например, создание модели во время setUp(), когда вы хотите использовать ее для нескольких тестов, или непосредственно в отдельном тестовом примере. Если же вы хотите провести тестирование с использованием различных данных, вам лучше обратиться к провайдерам данных PHPUnit с моделями Eloquent.
Laravel News
Using Eloquent Factories With PHPUnit Data Providers - Laravel News
Using data providers with feature tests can pose a problem because they run before Laravel is bootstrapped. Let's look at how to use Eloquent factories within PHPUnit data providers.
👍2❤1
Привет, друзья! 👋
Мы готовим статью о типичных ошибках начинающих разработчиков. И нам очень нужна ваша помощь! 🙏
Поделитесь своим опытом и мнением в комментариях:
❓С какими сложностями вы сталкивались в начале своего пути в разработке?
❓Какие ошибки допускали и как их исправляли?
❓Что помогло вам быстрее расти профессионально?
Самые интересные и полезные советы мы обязательно включим в статью, а их авторов упомянем в публикации! 😊
Мы готовим статью о типичных ошибках начинающих разработчиков. И нам очень нужна ваша помощь! 🙏
Поделитесь своим опытом и мнением в комментариях:
❓С какими сложностями вы сталкивались в начале своего пути в разработке?
❓Какие ошибки допускали и как их исправляли?
❓Что помогло вам быстрее расти профессионально?
Самые интересные и полезные советы мы обязательно включим в статью, а их авторов упомянем в публикации! 😊
Когда вы работаете с приложением Laravel, вы, вероятно, работаете с большим количеством электронных писем. Например, каждый раз, когда создается новый пользователь, ему будут отправляться письма с приветствием и подтверждением. Есть много таких случаев, когда будут отправляться письма. Поэтому в тестовых окружениях не имеет смысла использовать разные адреса электронной почты для разных целей.
А что, если мы могли бы использовать только один адрес электронной почты, и все письма приложения будут отправляться на этот адрес? Во фасаде Mail есть метод alwaysTo(), где вы можете указать глобальный адрес, на который будут отправляться все письма приложения.
Вы можете настроить это в методе boot AppServiceProvider вашего приложения, как показано ниже. Как вы можете понять, мы можем настроить это для всех сред, кроме производственной, и все будет работать! Другим способом можно сделать это, установив универсального получателя, указав параметр to в файле config/mail.php следующим образом.
А что, если мы могли бы использовать только один адрес электронной почты, и все письма приложения будут отправляться на этот адрес? Во фасаде Mail есть метод alwaysTo(), где вы можете указать глобальный адрес, на который будут отправляться все письма приложения.
Вы можете настроить это в методе boot AppServiceProvider вашего приложения, как показано ниже. Как вы можете понять, мы можем настроить это для всех сред, кроме производственной, и все будет работать! Другим способом можно сделать это, установив универсального получателя, указав параметр to в файле config/mail.php следующим образом.
❤8👍3😁1👾1
🧑💻 Статьи для IT: как объяснять и распространять значимые идеи
Напоминаем, что у нас есть бесплатный курс для всех, кто хочет научиться интересно писать — о программировании и в целом.
Что: семь модулей, посвященных написанию, редактированию, иллюстрированию и распространению публикаций.
Для кого: для авторов, копирайтеров и просто программистов, которые хотят научиться интересно рассказывать о своих проектах.
👉Материалы регулярно дополняются, обновляются и корректируются. А еще мы отвечаем на все учебные вопросы в комментариях курса.
Напоминаем, что у нас есть бесплатный курс для всех, кто хочет научиться интересно писать — о программировании и в целом.
Что: семь модулей, посвященных написанию, редактированию, иллюстрированию и распространению публикаций.
Для кого: для авторов, копирайтеров и просто программистов, которые хотят научиться интересно рассказывать о своих проектах.
👉Материалы регулярно дополняются, обновляются и корректируются. А еще мы отвечаем на все учебные вопросы в комментариях курса.
Мастеринг путей к файлам PHP: Упрощение структуры вашего проекта
Статья обсуждает пути к файлам в PHP и как правильно их использовать. Она охватывает следующие темы:
🔸Абсолютные и относительные пути к файлам:
Абсолютный путь указывает полное местоположение файла в файловой системе, начиная от корневого каталога. Он всегда одинаков, независимо от текущего рабочего каталога (CWD).
Относительный путь указывает местоположение файла относительно текущего рабочего каталога или другого каталога. Он использует одинарную точку (.) для текущего каталога и двойную точку (..) для родительского каталога.
🔸Примеры использования путей: Примеры абсолютных и относительных путей для подключения файла connection.php из различных файлов проекта.
🔸Разделители каталогов в PHP: использование прямого слэша (/) и обратного слэша () в путях, а также их кроссплатформенная поддержка.
🔸Функции для работы с путями в PHP:
basename(): Возвращает имя файла из пути.
dirname(): Возвращает имя каталога из пути.
realpath(): Преобразует относительный путь в абсолютный.
glob(): Находит пути, соответствующие заданному шаблону.
file_exists(): Проверяет существование файла или каталога.
Статья обсуждает пути к файлам в PHP и как правильно их использовать. Она охватывает следующие темы:
🔸Абсолютные и относительные пути к файлам:
Абсолютный путь указывает полное местоположение файла в файловой системе, начиная от корневого каталога. Он всегда одинаков, независимо от текущего рабочего каталога (CWD).
Относительный путь указывает местоположение файла относительно текущего рабочего каталога или другого каталога. Он использует одинарную точку (.) для текущего каталога и двойную точку (..) для родительского каталога.
🔸Примеры использования путей: Примеры абсолютных и относительных путей для подключения файла connection.php из различных файлов проекта.
🔸Разделители каталогов в PHP: использование прямого слэша (/) и обратного слэша () в путях, а также их кроссплатформенная поддержка.
🔸Функции для работы с путями в PHP:
basename(): Возвращает имя файла из пути.
dirname(): Возвращает имя каталога из пути.
realpath(): Преобразует относительный путь в абсолютный.
glob(): Находит пути, соответствующие заданному шаблону.
file_exists(): Проверяет существование файла или каталога.
👍3
Что вас больше всего раздражает в работе?
Anonymous Poll
26%
глупые вопросы от коллег и клиентов
45%
созвоны
35%
работа с документами и отчётами
15%
презентации
14%
планирование
16%
написание рабочих писем
10%
собственно сами рабочие задачи
10%
свой вариант (напишу в комментариях)
Composer Diff
Библиотека, которая генерирует отчет об изменениях в пакетах в формате Markdown, сравнивая файлы composer.lock. По умолчанию сравнивает с последними зафиксированными изменениями.
Библиотека, которая генерирует отчет об изменениях в пакетах в формате Markdown, сравнивая файлы composer.lock. По умолчанию сравнивает с последними зафиксированными изменениями.
GitHub
GitHub - IonBazan/composer-diff: Compares composer.lock changes and generates Markdown report so you can use it in PR description.
Compares composer.lock changes and generates Markdown report so you can use it in PR description. - IonBazan/composer-diff
👍1
❗️Вакансии «Библиотеки программиста» — ждем вас в команде!
Мы постоянно растем и развиваемся, поэтому создали отдельную страницу, на которой будут размещены наши актуальные вакансии. Сейчас мы ищем:
👉 авторов в наше медиа proglib.io
👉 контент-менеджеров для ведения телеграм-каналов
Подробности тут.
Мы предлагаем частичную занятость и полностью удаленный формат работы — можно совмещать с основной и находиться в любом месте🌴
Ждем ваших откликов👾
Мы постоянно растем и развиваемся, поэтому создали отдельную страницу, на которой будут размещены наши актуальные вакансии. Сейчас мы ищем:
Подробности тут.
Мы предлагаем частичную занятость и полностью удаленный формат работы — можно совмещать с основной и находиться в любом месте🌴
Ждем ваших откликов
Please open Telegram to view this post
VIEW IN TELEGRAM
Сравнение значений переменных в РНР и подводные камни? Приведение типов. Что изменилось в PHP 8 в этом контексте?
В PHP, сравнение значений переменных может быть подвержено некоторым особенностям из-за приведения типов. Вот несколько важных вещей, которые следует учитывать при сравнении значений переменных в PHP:
1️⃣Неявное приведение типов: PHP может неявно приводить значения переменных к определенному типу при выполнении операций. Например, при сравнении числа и строки, PHP попытается привести строку к числу.
2️⃣Типизация сравнения: Оператор == выполняет нестрогое сравнение значений с приведением типов, в то время как оператор === выполняет строгое сравнение без приведения типов. Строгое сравнение учитывает и тип данных и значение.
3️⃣Знаки сравнения: При использовании операторов сравнения (<, <=, >, >=), PHP также может производить неявное приведение типов.
Изменения в PHP 8:
В PHP 8 был добавлен новый оператор match, который выполняет строгое сравнение без приведения типов. Это позволяет писать более четкий и предсказуемый код.
#вопросы_с_собеседований
В PHP, сравнение значений переменных может быть подвержено некоторым особенностям из-за приведения типов. Вот несколько важных вещей, которые следует учитывать при сравнении значений переменных в PHP:
1️⃣Неявное приведение типов: PHP может неявно приводить значения переменных к определенному типу при выполнении операций. Например, при сравнении числа и строки, PHP попытается привести строку к числу.
2️⃣Типизация сравнения: Оператор == выполняет нестрогое сравнение значений с приведением типов, в то время как оператор === выполняет строгое сравнение без приведения типов. Строгое сравнение учитывает и тип данных и значение.
3️⃣Знаки сравнения: При использовании операторов сравнения (<, <=, >, >=), PHP также может производить неявное приведение типов.
Изменения в PHP 8:
В PHP 8 был добавлен новый оператор match, который выполняет строгое сравнение без приведения типов. Это позволяет писать более четкий и предсказуемый код.
#вопросы_с_собеседований
👍5
API, ориентированный на операции, с использованием PHP и Symfony
При разработке API часто используется подход CRUD (создание, чтение, обновление, удаление) для организации конечных точек. Например, для ресурса «blog-post» создаются следующие конечные точки:
Чтение всех постов: GET /blog-post
Чтение конкретного поста: GET /blog-post/{id}
Создание нового поста: POST /blog-post
Обновление поста: PATCH /blog-post/{id}
Удаление поста: DELETE /blog-post/{id}
Операционно-ориентированный подход
Для более сложных операций можно использовать операционно-ориентированный подход. Здесь операции рассматриваются как ресурсы, и все операции выполняются через одну конечную точку:
POST: /api/operation
Полезная нагрузка должна содержать информацию об операции и данных для её выполнения. Сервер должен получить операцию и данные, выполнить операцию и вернуть результат клиенту.
Преимущества Symfony
Symfony может помочь организовать операции с использованием атрибутов Autoconfigure и TaggedIterator. Это позволяет автоматически добавлять операции в коллекцию и извлекать нужную операцию по её имени.
После получения операции данные проверяются и валидируются. Затем операция выполняется, и результат возвращается клиенту.
При разработке API часто используется подход CRUD (создание, чтение, обновление, удаление) для организации конечных точек. Например, для ресурса «blog-post» создаются следующие конечные точки:
Чтение всех постов: GET /blog-post
Чтение конкретного поста: GET /blog-post/{id}
Создание нового поста: POST /blog-post
Обновление поста: PATCH /blog-post/{id}
Удаление поста: DELETE /blog-post/{id}
Операционно-ориентированный подход
Для более сложных операций можно использовать операционно-ориентированный подход. Здесь операции рассматриваются как ресурсы, и все операции выполняются через одну конечную точку:
POST: /api/operation
Полезная нагрузка должна содержать информацию об операции и данных для её выполнения. Сервер должен получить операцию и данные, выполнить операцию и вернуть результат клиенту.
Преимущества Symfony
Symfony может помочь организовать операции с использованием атрибутов Autoconfigure и TaggedIterator. Это позволяет автоматически добавлять операции в коллекцию и извлекать нужную операцию по её имени.
После получения операции данные проверяются и валидируются. Затем операция выполняется, и результат возвращается клиенту.
🤔3
Please open Telegram to view this post
VIEW IN TELEGRAM
🌚16👾8👍2
Это пошаговое руководство по созданию AI-ассистента, который может понимать и отвечать на сложные вопросы с помощью Twilio Programmable Voice и OpenAI. В нем подробно объясняется, как настроить и интегрировать необходимые инструменты, включая Laravel, Twilio и OpenAI, чтобы создать голосового помощника.
После настройки всех компонентов, ассистент будет готов принимать звонки, обрабатывать голосовые запросы и предоставлять ответы на основе AI.
После настройки всех компонентов, ассистент будет готов принимать звонки, обрабатывать голосовые запросы и предоставлять ответы на основе AI.
DEV Community
How To Build an AI-Powered Voice Assistant With Twilio, Laravel, and OpenAI
Voice assistants, such as Amazon Alexa and Apple's Siri have become integral to people’s lives, as...
👏6👍2🔥2
Как повысить эффективность разработки с помощью PHP 8
Статья обсуждает основные нововведения и улучшения в PHP 8, которые способствуют повышению эффективности разработки, улучшению производительности и качеству языка. Такие как расширенная типизация, выражение match, Nullsafe оператор и другие
Статья обсуждает основные нововведения и улучшения в PHP 8, которые способствуют повышению эффективности разработки, улучшению производительности и качеству языка. Такие как расширенная типизация, выражение match, Nullsafe оператор и другие
DEV Community
How to Improve Development Efficiency with PHP 8
PHP 8 is a significant version of the PHP language, introducing many new features and improvements...
👍3😁3
#дайджест новостей по PHP за неделю:
🔎Выпущен CakePHP 4.5.6 — Улучшения: Исправлено, как MemcacheEngine обрабатывает пустые значения префикса. Исправлена HTML-валидация для чекбоксов, генерируемых FormHelper + многое другое.
🔎Просмотр сторонних отношений в команде model:show теперь доступен в Laravel 11.11 — На этой неделе команда Laravel выпустила версию 11.11, в которой появилась поддержка сторонних отношений в команде model:show, новые методы Collection, новые события кэша и многое другое.
🔎Выпущена версия Symfony 7.1.2 — Только что состоялся релиз Symfony 7.1.2. Вот список наиболее важных изменений по сравнению с 7.1.1.
🔎Основные возможности PhpStorm 2024.2 EAP — наиболее значимые функции, доступные в последней версии EAP. Вы можете попробовать их, скачав и установив сборку EAP со стабильной версией PhpStorm.
🔎Неделя Symfony #913 (24-30 июня 2024 года)
🔎Выпущен CakePHP 4.5.6 — Улучшения: Исправлено, как MemcacheEngine обрабатывает пустые значения префикса. Исправлена HTML-валидация для чекбоксов, генерируемых FormHelper + многое другое.
🔎Просмотр сторонних отношений в команде model:show теперь доступен в Laravel 11.11 — На этой неделе команда Laravel выпустила версию 11.11, в которой появилась поддержка сторонних отношений в команде model:show, новые методы Collection, новые события кэша и многое другое.
🔎Выпущена версия Symfony 7.1.2 — Только что состоялся релиз Symfony 7.1.2. Вот список наиболее важных изменений по сравнению с 7.1.1.
🔎Основные возможности PhpStorm 2024.2 EAP — наиболее значимые функции, доступные в последней версии EAP. Вы можете попробовать их, скачав и установив сборку EAP со стабильной версией PhpStorm.
🔎Неделя Symfony #913 (24-30 июня 2024 года)
👍2
HTML Embed Code: