Меня часто спрашивают, почему я в классах при использовании анонимных функций в коллбеках хуков делаю их статическими.
Анонимные функции (closures) позволяют создавать функции, не имеющие определённых имён. Они наиболее полезны в качестве значений callable-параметров, но также могут иметь и множество других применений.
Анонимные функции реализуются с использованием класса Closure.
При объявлении в контексте класса, текущий класс будет автоматически связан с ним, делая $this доступным внутри функций класса. Если вы не хотите автоматического связывания с текущим классом, используйте статические анонимные функции.
Замыкание, содержащее ссылку на $this, может быть не обработано сборщиком мусора, что, в свою очередь, может существенно повлиять на производительность.
Поэтому, если подвести короткий итог, то анонимные функции без static стоит использовать если вам необходимо привязать объект к области видимости выполнения функции. Во всех остальных случаях можно и нужно использовать static, как минимум, чтобы случайно не выстрелить себе в ногу.
В плагине EA Extended для PhpStorm коллбеки без static будут подсвечиваться. Рекомендую!
Подсмотрено у Кирилла из Beer::PHP.
class Plugin {
public function init(): void {
add_action(
'wp_head',
static function() {
// Тут ваш код
}
);
}
}Анонимные функции (closures) позволяют создавать функции, не имеющие определённых имён. Они наиболее полезны в качестве значений callable-параметров, но также могут иметь и множество других применений.
Анонимные функции реализуются с использованием класса Closure.
При объявлении в контексте класса, текущий класс будет автоматически связан с ним, делая $this доступным внутри функций класса. Если вы не хотите автоматического связывания с текущим классом, используйте статические анонимные функции.
Замыкание, содержащее ссылку на $this, может быть не обработано сборщиком мусора, что, в свою очередь, может существенно повлиять на производительность.
Поэтому, если подвести короткий итог, то анонимные функции без static стоит использовать если вам необходимо привязать объект к области видимости выполнения функции. Во всех остальных случаях можно и нужно использовать static, как минимум, чтобы случайно не выстрелить себе в ногу.
В плагине EA Extended для PhpStorm коллбеки без static будут подсвечиваться. Рекомендую!
Подсмотрено у Кирилла из Beer::PHP.
👍5
Теперь можно тестировать пул-реквесты WordPress прямо в браузере
https://wptavern.com/preview-wordpress-core-pull-requests-with-playground
https://wptavern.com/preview-wordpress-core-pull-requests-with-playground
WP Tavern
Preview WordPress Core Pull Requests with Playground
Adam Zieliński, creator of WordPress Playground, announced today that the WordPress Core PR previewer is now live. Playground is an experimental project that uses WebAssembly (WASM) to run WordPres…
Forwarded from Записки админа
🆖 Using Nginx for Geolocation Routing on Ubuntu Server - статья о настройке балансировки в Nginx на основе данных от MaxMind.
#nginx #напочитать
#nginx #напочитать
🔥2👍1
JSON Resume — новый открытый стандарт, который служит для представления и передачи резюме в формате JSON.
С помощью JSON Resume вы можете создавать, хранить и представлять своё резюме в универсальном JSON-формате, обеспечивая лёгкость интеграции между разными платформами.
👉 https://www.kobzarev.com/other/json-resume/
#json #resume #jsonresume
С помощью JSON Resume вы можете создавать, хранить и представлять своё резюме в универсальном JSON-формате, обеспечивая лёгкость интеграции между разными платформами.
👉 https://www.kobzarev.com/other/json-resume/
#json #resume #jsonresume
🔥1
YandexART — это новая диффузионная нейросеть от Яндекса, которая создаёт изображения и анимацию.
https://yandex-gpt.com/yandexart/
https://yandex-gpt.com/yandexart/
YandexAI
YandexART — диффузионная нейросеть от Яндекса - YandexAI
YandexART — это новая диффузионная нейросеть от Яндекса, которая создаёт изображения и анимацию. Вот что о ней стоит знать YandexART формирует изображения
Forwarded from Инструменты программиста
Render — это унифицированный облачный хостинг
На нём вы можете создавать и запускать собственные приложения и веб-сайты с бесплатными сертификатами TLS, глобальной CDN, защитой от DDoS и автоматическими развёртываниями из Git
Вообще, платформа отлично подходит разработчикам, которые ищут надёжное, быстрое и удобное решение для выкладки своих приложений без лишних хлопот
Стоимость: #бесплатно (но есть платные тарифы)
#web #разработка #автоматизация
На нём вы можете создавать и запускать собственные приложения и веб-сайты с бесплатными сертификатами TLS, глобальной CDN, защитой от DDoS и автоматическими развёртываниями из Git
Вообще, платформа отлично подходит разработчикам, которые ищут надёжное, быстрое и удобное решение для выкладки своих приложений без лишних хлопот
Стоимость: #бесплатно (но есть платные тарифы)
#web #разработка #автоматизация
В новой версии Telegram завезли нормальную подсветку синтаксиса на указанном языке. Ждем релиз
https://desktop.telegram.org/changelog#beta-version
https://desktop.telegram.org/changelog#beta-version
Telegram
Version history
5.12.6 beta 20.03.25
Allow customizing chats list swipe left action.
5.12.4 beta 12.03.25
Touchpad swipe back to go back…
Allow customizing chats list swipe left action.
5.12.4 beta 12.03.25
Touchpad swipe back to go back…
Forwarded from ПОКВМ | Мстители: Судный день
🕸ЯДОВИТАЯ ПРЕМЬЕРА🕸
Вторая серия «Человека-Паука'94» в дубляже «Студии 616»!
💙 Смотреть в ВК
🔥 Смотреть на сайте RHS
💰 – Поддержать проект
Приятного просмотра!
Вторая серия «Человека-Паука'94» в дубляже «Студии 616»!
🔥 Смотреть на сайте RHS
💰 – Поддержать проект
Приятного просмотра!
Please open Telegram to view this post
VIEW IN TELEGRAM
Forwarded from Инструменты программиста
Memo App — заметки с использованием GitHub Gists
Инструмент обеспечивет приватное хранение данных и доступность из любой точки мира
При этом есть здесь и интерактивный опыт работы с Markdown, предпросмотр изображений, автоформатирование и интеграция с различными дополнениями для анализа текста
Стоимость: #бесплатно
#заметки #GitHub #open_source
Инструмент обеспечивет приватное хранение данных и доступность из любой точки мира
При этом есть здесь и интерактивный опыт работы с Markdown, предпросмотр изображений, автоформатирование и интеграция с различными дополнениями для анализа текста
Стоимость: #бесплатно
#заметки #GitHub #open_source
Forwarded from Инструменты программиста
Firebase — это платформа для разработки мобильных и веб-приложений от Google
Она предлагает ускоренную разработку приложений с полностью управляемой инфраструктурой, интеграцию с GitHub Gists, мониторинг производительности и стабильности, а также инструменты для увеличения вовлеченности пользователей
К слову, в Firebase можно легко интегрироваться с популярными инструментами, такими как Google Ads, AdMob, Google Marketing Platform и т.д
Поддерживается облачное хранение, аутентификация и множество других функций
Стоимость: #бесплатно (но есть платные тарифы)
#разработка #mobile #web
Она предлагает ускоренную разработку приложений с полностью управляемой инфраструктурой, интеграцию с GitHub Gists, мониторинг производительности и стабильности, а также инструменты для увеличения вовлеченности пользователей
К слову, в Firebase можно легко интегрироваться с популярными инструментами, такими как Google Ads, AdMob, Google Marketing Platform и т.д
Поддерживается облачное хранение, аутентификация и множество других функций
Стоимость: #бесплатно (но есть платные тарифы)
#разработка #mobile #web
Отличный пост от Геннадия Ковшенина о лжеразработчиках
https://tenchat.ru/media/472861-o-lzherazrabotchikakh
https://tenchat.ru/media/472861-o-lzherazrabotchikakh
tenchat.ru
О лжеразработчиках
У них классное резюме, отвечающее всем требованиям вакансии, уверенное, открытое поведение на первом собеседовании с HR, примеры работ и даже выполненное тестовое задание. Они способны пройти техническое собеседование.
В вечной обстановке нехватки действительно…
В вечной обстановке нехватки действительно…
👍4
JWT Аутентификация для WordPress по средствам REST API
https://coderun.ru/blog/jwt-autentifikaciya-dlya-wordpress-po-sredstvam-rest-api/
https://coderun.ru/blog/jwt-autentifikaciya-dlya-wordpress-po-sredstvam-rest-api/
Forwarded from Инструменты программиста
Auto Style Sheet — автоматическое создание стайл-гайдов
Этот плагин для Figma в один клик сканирует ваш файл и автоматически предоставляет вам отчёт по стилевому руководству для использования в дизайне ваших продуктов
Инструмент экономит значительное время, выявляя несоответствия в графическом дизайне и обеспечивая бесперебойный переход от дизайна к разработке
Стоимость: #бесплатно
#Figma #дизайн
Этот плагин для Figma в один клик сканирует ваш файл и автоматически предоставляет вам отчёт по стилевому руководству для использования в дизайне ваших продуктов
Инструмент экономит значительное время, выявляя несоответствия в графическом дизайне и обеспечивая бесперебойный переход от дизайна к разработке
Стоимость: #бесплатно
#Figma #дизайн
Forwarded from Пых (Валентин Удальцов)
Упрощаем тесты с участием файлов
Представим, что мы написали функцию
Первая мысль — написать несколько CSV-файликов, положить их рядом с тестом, а в самом тесте сравнить результат их парсинга с ожидаемыми значениями. Очень просто, но неудобно: тест разбросан по нескольким файлам, сложно читать и вносить изменения.
Вторая мысль — mikey179/vfsstream. Это пакет, который позволяет налету в памяти создавать файловую систему и взаимодействовать с ней как с реальной. Круто, но для тестирования нашей простенькой функции слишком мощно.
А теперь третий вариант, оптимальный. В PHP есть data stream wrapper (а-ля RFC 2397), который позволяет инлайнить содержимое файла прямо в "путь". Формула проста:
https://www.php.net/manual/ru/wrappers.data.php
Представим, что мы написали функцию
parseCSVFile, которая принимает путь до CSV-файла и возвращает распарсенные данные в удобном нам формате. Как её протестировать?Первая мысль — написать несколько CSV-файликов, положить их рядом с тестом, а в самом тесте сравнить результат их парсинга с ожидаемыми значениями. Очень просто, но неудобно: тест разбросан по нескольким файлам, сложно читать и вносить изменения.
Вторая мысль — mikey179/vfsstream. Это пакет, который позволяет налету в памяти создавать файловую систему и взаимодействовать с ней как с реальной. Круто, но для тестирования нашей простенькой функции слишком мощно.
А теперь третий вариант, оптимальный. В PHP есть data stream wrapper (а-ля RFC 2397), который позволяет инлайнить содержимое файла прямо в "путь". Формула проста:
data://{MIME-тип},{Содержимое}. В итоге тест будет выглядеть так:$csv = <<<'CSV'
data://text/csv,PHP Version,2022-01,2022-07,2023-01,2023-07
8.0,23.9%,20.6%,16.2%,12.3%
8.1,9.1%,24.5%,38.8%,39.3%
8.2,0.0%,0.0%,4.7%,17.2%
CSV;
$expected = [...];
$parsed = parseCSVFile($csv);
self::assertSame($expected, $parsed);
https://www.php.net/manual/ru/wrappers.data.php
Forwarded from Пятиминутка PHP
Зацените что нашел на просторах телеграмм чатов: PHPoC (PHP on Chip) – аппаратная платформа, объединяющая микроконтроллеры со встроенным PHP интерпретатором https://voltiq.ru/cat/devboards/phpoc/