FormDataКогда изучаете, как получить доступ к данным формы в React, исторически вы должны были узнать об управляемых и неуправляемых полях. Позже можете начать использовать сторонние абстракции, такие как Formik или React Hook Form, использующие управляемые и неуправляемые методы под капотом. В любом случае конечной целью является сбор данных формы. В случае с управляемой формой ваши данные — это ваше состояние. В случае с неуправляемой нужно собирать значения формы самостоятельно, и обычно разработчики выбирают для этого рефы.
Все поля форм в React должны быть либо управляемыми, либо неуправляемыми, потому что вы либо добавляете
value в проп, либо нет. FormData, стандарт JavaScript с 2010 года, — это способ доступа к данным формы, независимо от того, управляемая она или неуправляемая, но большинство предпочитает неуправляемую.#React #FromData #JavaScript #TypeScript
Please open Telegram to view this post
VIEW IN TELEGRAM
👍3❤1🔥1
exists() и doesntExist() Однострочная проверка существования без лишних хлопот#laravel #eloquent #tips
Please open Telegram to view this post
VIEW IN TELEGRAM
👍4❤1🔥1
Please open Telegram to view this post
VIEW IN TELEGRAM
😁6🔥1🤣1
expect()У фреймворка тестирования Pest много поклонников, в основном из-за элегантного, читабельного «англоязычного» синтаксиса. Я покажу три моих любимых примера синтаксиса
expect() и сравню аналогичные вещи в Pest vs PHPUnit.В целом, эта тема вызывает много мнений, и синтаксис — это личное предпочтение. На Reddit есть пост годичной давности, где люди выступают против синтаксиса Pest. Но мне он нравится. Позвольте продемонстрировать примеры.
#php #testing #pest #phpunit
Please open Telegram to view this post
VIEW IN TELEGRAM
👍1🔥1
Чем тестируете 👩💻 ?
Anonymous Poll
57%
PHPUnit
11%
Pest
15%
Другое (Codeception, SimpleTest, PhpSpec и т.д.)
46%
Не тестирую 😑
👍2
При работе с пакетными заданиями лучше всего проверять, не отменен ли пакет перед выполнением задания, и это не обязательно делать вручную, потому что middleware
SkipIfBatchCancelled делает именно это #laravel #middleware #tips
Please open Telegram to view this post
VIEW IN TELEGRAM
❤4👍1🔥1
Часто, когда думают о PHPStan, обычно думают об улучшении Type Coverage. На самом деле это лишь малая часть того, на что способен PHPStan. В статье рассмотрим, как использовать его для предотвращения регрессий обновления.
Регрессия обновления — это когда в приложении есть функциональность, от которой необходимо отказаться. Это может быть код внутри приложения или код в установленной зависимости.
Часто при попытке выполнить обновление не удаётся сделать всё за один раз. Вместо этого приходится вносить небольшие поэтапные изменения. В то же время не хочется, чтобы другие разработчики продолжали использовать устаревшие методы и свойства. В такой ситуации вызовы новых методов и т. д. являются регрессом в процессе обновления приложения.
#php #PHPStan
Please open Telegram to view this post
VIEW IN TELEGRAM
👍1👏1
PipelineЧасто нужно обработать входные данные в несколько этапов, например, применить фильтры запроса или очистить данные в многоступенчатой цепочке. Если столкнулись с подобной ситуацией, воспользуйтесь хелпером
Pipeline #laravel #pipeline #tips
Please open Telegram to view this post
VIEW IN TELEGRAM
❤1👍1
defer().Функция
defer(), как следует из названия, позволяет отложить (проще говоря, перенести) выполнение функции или замыкания после того, как ответ будет отправлен обратно клиенту.Это удобно для небольших операций, выполняемых в фоновом режиме, когда назначение задания очереди (Queue Job) может оказаться слишком сложным - например, для отправки уведомлений.
Кроме того, функция`defer()
проверяет код состояния ответа (`2xx), чтобы убедиться в его успешности перед выполнением замыкания.#laravel #defer #php #tips
Please open Telegram to view this post
VIEW IN TELEGRAM
👍1👏1
Хотите преобразовать значение длины в значение без единицы измерения?
Из любого значения CSS можно убрать единицу измерения, для получения целого числа!
@property --unitless-val {
syntax: '<integer>';
inherits: true;
initial-value: 0;
}
@property --_u {
syntax: '<length>';
inherits: true;
initial-value: 0;
}
:root {
--val: 25em; /* используем любую единицу измерения длинны (px, em, ex, ch, rem, ...)*/
/* умножаем, затем делим на наибольшее значение, чтобы получить единицу измерения */
--_m: 3.35544e07; /* это значение зависит от браузера */
--_u: calc(var(--val)*var(--_m));
--unit: calc(var(--_u)/var(--_m)); /* = 1em */
--unitless-val: tan(atan2(var(--val),var(--unit))); /* = 25 */
/* В ближайшем будущем можно будет сделать
--unitless-val: calc(var(--val)/var(--unit));
*/
}
/* для Firefox нужно другое значение */
@supports (-moz-appearance: none) {
:root {
--_m: 3.40282e38;
}
}Вы можете подумать, что можно использовать
Infinity в качестве наибольшего значения, но это не сработает, потому что при делении на бесконечность всегда будет получаться 0.Проверено в
px, потому что значение преобразуется в px внутри переменной --_u.#css #hack
Please open Telegram to view this post
VIEW IN TELEGRAM
👍1🔥1
git switch и git checkout: В чем разницаКоманды
git switch и git checkout используются для изменения веток, но у них есть различия в синтаксисе и поведении. Разберёмся в чём разница между ними.Одна из важнейших особенностей Git — возможность создавать различные ветки и работать в них. Ветки — это как параллельные временные линии проекта, в которых можно работать над различными функциями или экспериментами, не затрагивая стабильный код. Мы перемещаемся между ветками с помощью
git switch или git checkout.#git
Please open Telegram to view this post
VIEW IN TELEGRAM
❤3👍2🔥1
Метод eloquent
orderByRaw() позволяет просто передать сырой запрос для упорядочивания результатов.Например, сортировка по разнице между двумя столбцами.
#laravel #php #tips
Please open Telegram to view this post
VIEW IN TELEGRAM
👍1👏1
Все ошибки, предупреждения и уведомления в PHP имеют уровень ошибки, и с помощью функций
error_reporting и set_error_handler PHP приложения могут контролировать, о каких ошибках сообщается, и переопределять поведение обработки ошибок по умолчанию с помощью обратного вызова.PHP имеет широкий диапазон уровней ошибок, причём константа
E_ALL является битовой маской OR всех констант E_, что означает установку сообщения об ошибках или обработчика ошибок для сообщения/обработки всех ошибок, предупреждений и уведомлений.Одним из уровней ошибок, ранее выдаваемых PHP, был
E_STRICT, когда код не был строго корректным, чтобы обеспечить совместимость и дальнейшее развитие. В PHP 7.0 большинство существующих предупреждений E_STRICT были преобразованы в E_NOTICE, а начиная с PHP 8.0 все предупреждения E_STRICT были преобразованы в E_NOTICE.Поскольку все уведомления
E_STRICT были преобразованы в E_NOTICE начиная с PHP 8.0, в PHP 8.4 константа E_STRICT объявлена устаревшей.error_reporting(E_ALL & ~E_DEPRECATED & ~E_STRICT); // Constant E_STRICT is deprecated
#php #php84 #e_strict #deprecation
Please open Telegram to view this post
VIEW IN TELEGRAM
👍2🔥1
При проверке форм иногда требуется условно требовать заполнение одного поля, если было заполнено другое. Laravel поставляется с правилом
required_if_accepted, позволяющим сделать именно это #laravel #php #tips
Please open Telegram to view this post
VIEW IN TELEGRAM
❤3👍1👏1
В наши дни градиентный текст довольно легко сделать с помощью
background-clip: text; — но это убивает возможность использовать text-shadow. На помощь приходит SVG.#frontend #css #svg
Please open Telegram to view this post
VIEW IN TELEGRAM
❤1👍1🔥1
Начиная с Laravel v11.23, вы можете выполнять задачи одновременно. Это может ускорить работу, если есть независимые задачи, которые могут выполняться одновременно
#laravel #php #tips
Please open Telegram to view this post
VIEW IN TELEGRAM
❤1👍1
Атрибуты PHP — отличный способ добавить метаданные к классам, методам и свойствам. Laravel предоставляет множество атрибутов из коробки, которые можно использовать в приложениях.
Обзор PHP атрибутов Laravel с примерами от Christoph Rumpel.
#laravel #php #attribute
Please open Telegram to view this post
VIEW IN TELEGRAM
👍1🔥1
В своих приложениях мы часто используем выражение
where(..., 'like', ...). Знаете ли вы, что Laravel поставляется с методом whereLike, позволяющим сделать ещё один шаг вперёд и сделать оператор like нечувствительным к регистру? #laravel #php #tips
Please open Telegram to view this post
VIEW IN TELEGRAM
👍3❤1
Если добавляете что-либо в файл
.env, пожалуйста, не забудьте обновить и example.env! Это часть поддержания чистоты и организованности проектов. Please open Telegram to view this post
VIEW IN TELEGRAM
🤝5👍2🤡1
13 сентября 2024 года рабочая группа CSS выпустила первый публичный рабочий проект модуля CSS Values and Units Module Level 5. Он является продолжением предыдущего уровня и включает несколько интересных дополнений.
Вещи, которые ещё недавно были немыслимы, пробивают себе дорогу в спецификации: случайные значения, использование атрибутов в качестве значений в любом свойстве, возможность использовать порядок в вычислениях… Это выглядит многообещающе.
Многие из этих функций имеют общую черту: они упрощают CSS код. То, что раньше требовало множества правил или хаков, теперь можно будет сделать с помощью пары строк CSS. Как я уже сказал, это выглядит многообещающе. Вот список новых изменений (более подробная информация ниже):
attr(): теперь она может использоваться с любым атрибутом и в любом свойстве CSS (не только в content).calc-size(): использует в расчётах внутренние значения, такие как auto или min-content.first-valid() позволяет избежать проблем с пользовательскими свойствами с невалидными значениями.*-mix() с новой нотацией для соотношений.*-progress() для вычисления соотношения прогресса между диапазонами или внутри media, или container.random() и random-item() для возвращения случайных значений из диапазона или списка (наконец-то!)sibling-count() и sibling-index(), предоставляющие целочисленные значения для операций в зависимости от порядка и размера.toggle() для стилизации вложенных элементов, позволяющая циклически перебирать список значений.url() запросами.#frontend #css
Please open Telegram to view this post
VIEW IN TELEGRAM
👍1