static в замыкании? Да — и вот почемуНа первый взгляд, совет заменить обычную анонимную функцию на
static в array_map может показаться чисто стилевым. Но за этой рекомендацией скрывается реальный прирост производительности. ⚡📌 Что происходит:
–
static-замыкания не привязаны к $this, а значит, не тащат за собой контекст объекта– Это позволяет PHP быстрее освобождать память
– И в ряде случаев — существенно ускоряет выполнение кода
💡 Один из PR'ов в
Ocramius/GeneratedHydrator показал: просто добавив static, удалось добиться ~15% ускорения. А бенчмарки дали ещё более радикальную разницу:benchUsingStaticKeyword → 2.10MB / 3.70ms benchNotUsingStaticKeyword → 71.30MB / 17.17ms📉 Минус 30x по памяти, минус 4x по времени.
Чтобы внедрить это на постоянной основе, удобно использовать Rector с правилами
StaticClosureRector и StaticArrowFunctionRector. Так все замыкания, где не используется $this, становятся static автоматически. 🛠️✅ Быстрее
✅ Меньше памяти
✅ Автоматическая проверка в CI
👉 Читать статью
#лучшее2025