Заметки разработчика
471 subscribers
668 photos
4 videos
1.16K links
Заметки о Frontend, Backend и немного DevOps. В основном о #PHP, #Laravel, #JavaScript, #HTML, #CSS, тестировании и настройке серверов.

https://www.dev-notes.ru

@snakenf
Download Telegram
👩‍💻 PHP 8.4: Константа E_STRICT объявлена устаревшей

Все ошибки, предупреждения и уведомления в 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


🖥 Читать статью

📱 @dev_notes_ru

#php #php84 #e_strict #deprecation
Please open Telegram to view this post
VIEW IN TELEGRAM
👍2🔥1
💡 Совет по Laravel: Правило Требуется, если принято (заполнено)

При проверке форм иногда требуется условно требовать заполнение одного поля, если было заполнено другое. Laravel поставляется с правилом required_if_accepted, позволяющим сделать именно это 🚀.

📱 @dev_notes_ru

#laravel #php #tips
Please open Telegram to view this post
VIEW IN TELEGRAM
3👍1👏1
👩‍💻 Градиентный текст с тенью

В наши дни градиентный текст довольно легко сделать с помощью background-clip: text; — но это убивает возможность использовать text-shadow. На помощь приходит SVG.

🖥 Читать статью

📱 @dev_notes_ru

#frontend #css #svg
Please open Telegram to view this post
VIEW IN TELEGRAM
1👍1🔥1
💡 Совет по Laravel: Одновременное выполнение задач

Начиная с Laravel v11.23, вы можете выполнять задачи одновременно. Это может ускорить работу, если есть независимые задачи, которые могут выполняться одновременно 🚀.

📱 @dev_notes_ru

#laravel #php #tips
Please open Telegram to view this post
VIEW IN TELEGRAM
1👍1
👩‍💻 Все доступные в Laravel PHP атрибуты

Атрибуты PHP — отличный способ добавить метаданные к классам, методам и свойствам. Laravel предоставляет множество атрибутов из коробки, которые можно использовать в приложениях.

Обзор PHP атрибутов Laravel с примерами от Christoph Rumpel.

🖥 Читать статью

📱 @dev_notes_ru

#laravel #php #attribute
Please open Telegram to view this post
VIEW IN TELEGRAM
👍1🔥1
💡 Совет по Laravel: Метод `whereLike`

В своих приложениях мы часто используем выражение where(..., 'like', ...). Знаете ли вы, что Laravel поставляется с методом whereLike, позволяющим сделать ещё один шаг вперёд и сделать оператор like нечувствительным к регистру? 🚀

📱 @dev_notes_ru

#laravel #php #tips
Please open Telegram to view this post
VIEW IN TELEGRAM
👍31
👩‍💻 Внимание разработчики Laravel

Если добавляете что-либо в файл .env, пожалуйста, не забудьте обновить и example.env! Это часть поддержания чистоты и организованности проектов.

📱 @dev_notes_ru
Please open Telegram to view this post
VIEW IN TELEGRAM
🤝5👍2🤡1
👩‍💻 Новые значения и функции в CSS

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 для обеспечения большего контроля над url() запросами.
Расширение до типа позиции, позволяющее использовать значения относительно потока.

🖥 Читать статью

📱 @dev_notes_ru

#frontend #css
Please open Telegram to view this post
VIEW IN TELEGRAM
👍1
👩‍💻 PHP 8.4.0 перешёл в фазу релиз-кандидата!

Официальный релиз состоится 21 ноября, поэтому самое время начать тестировать приложения.

📱 @dev_notes_ru

#php #rc
Please open Telegram to view this post
VIEW IN TELEGRAM
👍2🔥2
💡 Совет по Laravel: Уведомления по требованию

Иногда вам может понадобиться отправлять уведомления «анонимным» пользователям, которые еще не хранятся в базе данных. Метод route в Laravel позволяет сделать именно это 🚀.

📱 @dev_notes_ru

#laravel #php #tips
Please open Telegram to view this post
VIEW IN TELEGRAM
👍1
Please open Telegram to view this post
VIEW IN TELEGRAM
👍6🥰1😁1
👩‍💻 Параметризуйте имена параметров!

Основная защита от SQL инъекций (SQLi) — это параметризация пользовательского ввода, позволяющая безопасно внедрять его в SQL запросы. Это стандартная практика, о которой постоянно говорится, и в Laravel это сделать довольно просто. На самом деле, я редко встречаю уязвимости SQLi в приложениях Laravel, потому что Eloquent достаточно мощный.

По моему опыту, чем сложнее запрос и чем больше сырого SQL нужно написать, тем выше вероятность появления SQL инъекции.

🖥 Читать статью

📱 @dev_notes_ru

#laravel #security #sqli
Please open Telegram to view this post
VIEW IN TELEGRAM
👍1
💡Совет по Laravel: Добавление нескольких столбцов после определенного столбца

Знаете ли вы, что можно добавить несколько столбцов после определенного столбца с помощью метода after? 🚀

📱 @dev_notes_ru

#laravel #migration #php #tips
Please open Telegram to view this post
VIEW IN TELEGRAM
👍61
Please open Telegram to view this post
VIEW IN TELEGRAM
🤡2🤔1🤣1
👩‍💻 Проблемы экспорта по умолчанию в модулях JavaScript

Модули JavaScript — способ организации кода в многократно используемые компоненты, используемые совместно в разных файлах и проектах. Модули можно импортировать и экспортировать с помощью двух различных методов: экспорта по умолчанию и именованного экспорта. Рассмотрим экспорт по умолчанию и причины, по которым следует избегать его использования в модулях JavaScript.

🖥 Читать статью

📱 @dev_notes_ru

#JavaScript #js
Please open Telegram to view this post
VIEW IN TELEGRAM
👍3🔥1
💡Совет по Laravel: Кэширование результата аксессора

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

📱 @dev_notes_ru

#laravel #php #tips
Please open Telegram to view this post
VIEW IN TELEGRAM
👍21
👩‍💻 CSS свойство animation-composition

Как я раньше не слышал о свойстве animation-composition? Я только что заметил его в блоге Manuel Matuzović:

В CSS анимацию можно компоновать тремя способами: заменять, добавлять и накапливать. Свойство animation-composition позволяет переключаться между ними.


Ха! Значит, можно эффективно добавлять, заменять или комбинировать анимации, о чем я никогда раньше не задумывался! Я даже не задумывался о стандартном поведении, заменяющем анимацию на элементе, так что в приведённом ниже CSS .element будет перемещаться только на 100px...

.element {
animation: move 2s infinite;
transform: translateX(10px);
}

@keyframes move {
to {
transform: translateX(100px);
}
}


Но что, если нужно сложить эти свойства, чтобы получилось 100 + 10? Для этого и существует animation-composition, и её можно использовать следующим образом:

.element {
animation: move 2s infinite;
transform: translateX(10px);
animation-composition: add;
}

@keyframes move {
to {
transform: translateX(100px);
}
}


Ха! Очень аккуратно!

Самое забавное, что когда я увидел это свойство сегодня утром, моей первой мыслью было: зачем нам это нужно? Я не мог представить сценариев, в которых оно помогло бы выпутаться из сложных проблем или помочь в работе с анимацией (что, признаться, случается со мной крайне редко). А потом, во второй половине дня, я работал с инженером и понял, что можно использовать эти animation-composition штуки без написания кучи сложного JavaScript!

Не забудьте также посмотреть пост Bramus'а о комбинировании нескольких анимационных эффектов.

🖥 Источник (🇬🇧)

📱 @dev_notes_ru

#css #cssanimation
Please open Telegram to view this post
VIEW IN TELEGRAM
👍1
👩‍💻 Разница между export default xxx и export {xxx as default}

Разница между export default xxx и export { xxx as default } в JavaScript может показаться малозаметной, но может повлиять на поведение кода.

Модули — автономные фрагменты кода, позволяющие импортировать и использовать их в других модулях. Они помогают разработчикам сохранять код организованным, удобным для сопровождения и понятным.

Для работы с модулями необходимо понимать синтаксис импорта и экспорта.

import: Используется для импорта именованных экспортов или экспортов по умолчанию из других модулей.
export: Используется для экспорта значений, функций или классов из модуля, делая их доступными для импорта другими модулями.

Существует два вида экспорта:

Именованные экспорты: В модуле может быть несколько именованных экспортов. Они импортируются явно, используя свои имена.
Экспорт по умолчанию: В каждом модуле может быть только один экспорт по умолчанию. Они импортируются без указания имени.

🖥 Читать статью

📱 @dev_notes_ru

#JavaScript #js
Please open Telegram to view this post
VIEW IN TELEGRAM
1
💡 Совет по Laravel: Удобные команды Artisan DB

Вам когда-нибудь нужно было проверить, работает ли подключение к БД так, как нужно? Сколько открытых соединений? Может быть, хотите узнать общий размер БД? В Artisan есть несколько классных команд, позволяющих сделать именно это 🚀.

📱 @dev_notes_ru

#laravel #artisan #php #tips
Please open Telegram to view this post
VIEW IN TELEGRAM
👍3
💡 «Избегайте использования else» — один из интересных советов по написанию чистого кода. Нельзя полностью отказаться от него, но можно убрать ненужные else.

public function getUserStatus($user)
{
if ($user->isActive()) {
return 'active';
}
return 'inactive';
}


Приведенный пример можно ещё упростить, используя тернарный оператор.

public function getUserStatus($user)
{
return $user->isActive() ? 'active' : 'inactive';
}


📱 @dev_notes_ru

#php #cleancode #tips
Please open Telegram to view this post
VIEW IN TELEGRAM
5👍3