#laravel #eloquent #php #tips #backend
Во время работы с Eloquent было одно поведение нетерпеливой загрузки, из-за которого возникла серьезная проблема.
Всякий раз, когда мы выполняем ленивую загрузку отношения в модели, дальнейшие вложенные отношения в связанной модели удаляются.
Это вызвало исключение
Чтобы избежать этой проблемы, всегда используйте метод
@dev_notes_ru
Во время работы с Eloquent было одно поведение нетерпеливой загрузки, из-за которого возникла серьезная проблема.
Всякий раз, когда мы выполняем ленивую загрузку отношения в модели, дальнейшие вложенные отношения в связанной модели удаляются.
Это вызвало исключение
LazyLoadingViolationException, потому что Laravel теперь пытался лениво загрузить эти недостающие вложенные отношения.Чтобы избежать этой проблемы, всегда используйте метод
loadMissing($relation) вместо метода load(), если не уверены, что отношения уже загружены.@dev_notes_ru
👍1
#css #features #frontend
Предоставление определения типа для CSS с @property
Пишите более безопасный CSS, используя
Кроссбраузерной возможностью с момента выхода Firefox 128 в июле 2024 года стало новое at-правило
Разберёмся, когда и почему традиционные запасные значения могут не сработать, и как функции
📄 Читать статью
@dev_notes_ru
Предоставление определения типа для CSS с @property
Пишите более безопасный CSS, используя
@property, позволяющий определять типы для пользовательских свойств. Узнайте, почему традиционные запасные значения могут не сработать и как функции @property повышают устойчивость определений пользовательских свойств.Кроссбраузерной возможностью с момента выхода Firefox 128 в июле 2024 года стало новое at-правило
@property, позволяющее определять типы, а также наследование и начальное значение для пользовательских свойств.Разберёмся, когда и почему традиционные запасные значения могут не сработать, и как функции
@property позволяют писать более безопасные и устойчивые определения пользовательских CSS свойств.📄 Читать статью
@dev_notes_ru
👍2
#laravel #db #database #mysql #backend
Разделение хостов баз данных для оптимизации в Laravel
На сайтах с высокой посещаемостью, например, в электронной коммерции или социальных сетях, где одновременно выполняется множество операций чтения и записи, база данных будет узким местом.
Например, в MySQL производительность чтения может пострадать при одновременном выполнении операций записи, поскольку операции записи могут получить блокировки, которые могут задержать операции чтения, особенно если база данных интенсивно используется и количество одновременных операций велико.
Кроме того, в большинстве случаев дисковый ввод/вывод распределяется между операциями чтения и записи. Большие объёмы записи могут привести к задержке ввода/вывода, замедляя операции чтения.
📄 Читать статью
@dev_notes_ru
Разделение хостов баз данных для оптимизации в Laravel
На сайтах с высокой посещаемостью, например, в электронной коммерции или социальных сетях, где одновременно выполняется множество операций чтения и записи, база данных будет узким местом.
Например, в MySQL производительность чтения может пострадать при одновременном выполнении операций записи, поскольку операции записи могут получить блокировки, которые могут задержать операции чтения, особенно если база данных интенсивно используется и количество одновременных операций велико.
Кроме того, в большинстве случаев дисковый ввод/вывод распределяется между операциями чтения и записи. Большие объёмы записи могут привести к задержке ввода/вывода, замедляя операции чтения.
📄 Читать статью
@dev_notes_ru
👍3
#laravel #tips #caching #example #php #backend
Пример кода Laravel: Кэширование.
Он взят из проекта с открытым исходным кодом pixelfed: не просто кэширование данных, а манипулирование их значениями.
Источник: https://github.com/pixelfed/pixelfed/blob/dev/app/Services/LikeService.php
@dev_notes_ru
Пример кода Laravel: Кэширование.
Он взят из проекта с открытым исходным кодом pixelfed: не просто кэширование данных, а манипулирование их значениями.
Источник: https://github.com/pixelfed/pixelfed/blob/dev/app/Services/LikeService.php
@dev_notes_ru
👍2❤1
#laravel #eloquent #php #tips #backend
При определении отношений вы можете использовать функцию
Это позволяет избежать проверки на
@dev_notes_ru
При определении отношений вы можете использовать функцию
withDefault(), чтобы предоставить значения по умолчанию для отсутствующих связанных моделей. Это позволяет избежать проверки на
null и сохранить чистоту представлений, а также легко указать значения по умолчанию.@dev_notes_ru
🔥3
#database #mysql #replication #backend
Как настроить MySQL репликацию Master-Slave
В облачных вычислениях репликация данных "master-slave" означает хранение одной и той же информации на нескольких серверах. Один сервер управляет группой, а другие устройства выполняют работу в пределах одного узла.
Репликация позволяет создавать регулярные ежедневные резервные копии, которые могут восстановить главную базу данных MySQL в случае сбоя в работе хранилища. Это также позволяет одновременно обрабатывать данные, не перегружая master сервер.
📄 Читать статью
@dev_notes_ru
Как настроить MySQL репликацию Master-Slave
В облачных вычислениях репликация данных "master-slave" означает хранение одной и той же информации на нескольких серверах. Один сервер управляет группой, а другие устройства выполняют работу в пределах одного узла.
Репликация позволяет создавать регулярные ежедневные резервные копии, которые могут восстановить главную базу данных MySQL в случае сбоя в работе хранилища. Это также позволяет одновременно обрабатывать данные, не перегружая master сервер.
📄 Читать статью
@dev_notes_ru
👍2🔥1
#laravel #php #tips #backend
Совет по Laravel💡: Проверка правильности JSON
Часто нам нужно проверить, является ли заданная строка валидным JSON. Laravel предоставляет элегантный метод
@dev_notes_ru
Совет по Laravel💡: Проверка правильности JSON
Часто нам нужно проверить, является ли заданная строка валидным JSON. Laravel предоставляет элегантный метод
isJson, чтобы помочь в этом. Он использует новую функцию json_validate в PHP 8.3 и json_decode для более ранних версий 🚀.@dev_notes_ru
👍3😁1
#laravel #php #tips #backend
Возможно, вы уже использовали кэш Laravel для хранения результатов, требующих больших ресурсов. Но знали ли вы, что в Laravel также есть хелпер
@dev_notes_ru
Возможно, вы уже использовали кэш Laravel для хранения результатов, требующих больших ресурсов. Но знали ли вы, что в Laravel также есть хелпер
once(), кэширующий результат для данного запроса.@dev_notes_ru
❤5
#database #replication #backend
Типы репликации баз данных
Репликация базы данных — это как создание копий важных документов, чтобы иметь резервные копии на случай, если с оригиналом что-то случится. Существуют различные способы создания таких копий, например, одна основная копия (master), которая обновляется, а затем создаются копии (slave) этой обновлённой версии. Другой способ — иметь несколько основных копий (master), обновляемых и совместно использующих эти обновления. Далее рассмотрим различные типы репликации баз данных.
📄 Читать статью
@dev_notes_ru
Типы репликации баз данных
Репликация базы данных — это как создание копий важных документов, чтобы иметь резервные копии на случай, если с оригиналом что-то случится. Существуют различные способы создания таких копий, например, одна основная копия (master), которая обновляется, а затем создаются копии (slave) этой обновлённой версии. Другой способ — иметь несколько основных копий (master), обновляемых и совместно использующих эти обновления. Далее рассмотрим различные типы репликации баз данных.
📄 Читать статью
@dev_notes_ru
👍3
#php #tips #backend
Советы по PHP: Оптимизируйте выражения If!
При написании выражений
Почему? PHP использует метод короткого замыкания. Если предыдущее условие не выполняется, последующие не проверяются, что экономит время обработки.
@dev_notes_ru
Советы по PHP: Оптимизируйте выражения If!
При написании выражений
if с несколькими условиями упорядочивайте их от самого быстрого к самому медленному.Почему? PHP использует метод короткого замыкания. Если предыдущее условие не выполняется, последующие не проверяются, что экономит время обработки.
@dev_notes_ru
👍8🔥1
#frontend #css
Синтаксис относительного цвета — примеры использования
Поддержка синтаксиса относительного цвета в CSS теперь повсеместна (вперёд, к взаимодействию!), поэтому рассмотрим некоторые базовые (и всё ещё очень полезные) варианты использования, например, применение альфы к цвету, который у вас есть под рукой.
📄 Читать статью
@dev_notes_ru
Синтаксис относительного цвета — примеры использования
Поддержка синтаксиса относительного цвета в CSS теперь повсеместна (вперёд, к взаимодействию!), поэтому рассмотрим некоторые базовые (и всё ещё очень полезные) варианты использования, например, применение альфы к цвету, который у вас есть под рукой.
📄 Читать статью
@dev_notes_ru
👍1
#frontend #sass #scss #vite #webpack
Ускорение компиляции Sass в Vite и Webpack
Vite поставляется со встроенной поддержкой Sass, а также других CSS-препроцессоров. Просто установите
Однако в этом была своя загвоздка. При каждом импорте Sass новый экземпляр Sass запускается, компилируется и завершается. Если у вас есть один импортированный файл точки входа Sass, импортирующий другие файлы Sass, это не так уж и важно. Но если используется однофайловый компонент(SFC) Vue с
Это может привести к большим потерям времени.
В начале этого года OddBird помог Sass добавить новый Compiler API, позволяющий повторно использовать один экземпляр Sass для нескольких компиляций. Хотя можно использовать новый API в собственных настройках компиляции Sass, было приятно увидеть, что команда Vite добавила его поддержку в версии 5.4.0.
📄 Читать статью
@dev_notes_ru
Ускорение компиляции Sass в Vite и Webpack
Vite поставляется со встроенной поддержкой Sass, а также других CSS-препроцессоров. Просто установите
npm sass, импортируйте файл .scss, и он заработает.Однако в этом была своя загвоздка. При каждом импорте Sass новый экземпляр Sass запускается, компилируется и завершается. Если у вас есть один импортированный файл точки входа Sass, импортирующий другие файлы Sass, это не так уж и важно. Но если используется однофайловый компонент(SFC) Vue с
lang="scss", то для каждого SFC создавался новый экземпляр Sass.Это может привести к большим потерям времени.
В начале этого года OddBird помог Sass добавить новый Compiler API, позволяющий повторно использовать один экземпляр Sass для нескольких компиляций. Хотя можно использовать новый API в собственных настройках компиляции Sass, было приятно увидеть, что команда Vite добавила его поддержку в версии 5.4.0.
📄 Читать статью
@dev_notes_ru
👍1
#php #psr11 #backend
PSR11 прост, но хорошо продуман... всего два основных интерфейса
-
-
@dev_notes_ru
PSR11 прост, но хорошо продуман... всего два основных интерфейса
-
get($id): Возвращает запись.-
has($id): Проверяет, есть ли в контейнере данная запись.@dev_notes_ru
👍2
#backend #php #tips
Почему я предпочитаю функции массива циклам
В PHP есть довольно много функций для работы с массивами, каждая из которых имеет своё собственное применение. В этой статье расскажу о функциях, которые обходят массив и выполняют функцию для каждого элемента в массиве.
Можно вспомнить такие функции, как
📄 Читать статью
@dev_notes_ru
Почему я предпочитаю функции массива циклам
В PHP есть довольно много функций для работы с массивами, каждая из которых имеет своё собственное применение. В этой статье расскажу о функциях, которые обходят массив и выполняют функцию для каждого элемента в массиве.
Можно вспомнить такие функции, как
array_reduce, array_map, array_filter и т. д. Каждая из этих функций выполняет определённые действия для каждого элемента массива и возвращает новое значение.📄 Читать статью
@dev_notes_ru
👍1