Web Мастерская»Блог

Сообщество Web Мастеров. Тут собрано всё, чтобы написать свой первый сайт, запустить его в Интернет и поддерживать его в течении всей его работы.

Прощание с eval(): Как переписать код и спать спокойно

Функция eval() — это попытка интерпретатора PHP выполнить произвольную строку как программный код. Это швейцарский нож, у которого вместо лезвия — циркулярная пила. Она удобна для написания «умных» конфигураций или динамических правил, но делает ваш проект уязвимым к RCE-атакам (Remote Code Execution) и невозможным для статического анализа инструментами вроде Psalm или PHPStan.

Хорошая новость: в 95% случаев можно найти безопасную альтернативу без потери функционала.



Сценарий 1: Динамические правила и математические выражения


Проблема: Пользователь вводит формулу скидки, например (price * quantity) - bonus. Вы используете eval("return $formula;").

Решение 1: Библиотеки парсинга выражений
Вместо выполнения кода, разберите его синтаксис.
  • Инструмент: symfony/expression-language или nxp/math-parser.
  • Как работает: Эти библиотеки не исполняют код, а строят дерево операций (AST). Они понимают только математику и логику, игнорируя системные вызовы.

// Было (Опасно)
$result =
...

Ускоряем PHP: Как помочь интерпретатору понять код

PHP часто называют медленным языком, но проблема обычно не в самом языке, а в том, как мы его пишем. Zend Engine выполняет наш скрипт, переводя текстовый файл в байткод, а затем в машинные инструкции. Наша задача — сделать этот путь максимально коротким.

Разберем основные приемы оптимизации от простого к сложному.



Избавляемся от «магических» поисков (isset vs array_key_exists)


Интерпретатор тратит время на поиск ключей.
  • Плохо: array_key_exists($key, $data). Эта функция ищет ключ по всему хэш-таблице массива.
  • Хорошо: isset($data[$key]). Это языковая конструкция. Она проверяет существование переменной и то, что она не null, делая это на уровне ядра виртуальной машины гораздо быстрее.

// Медленно (функция)
if (array_key_exists('id', $_GET)) { ... }

// Быстро (языковая конструкция)
if (isset($_GET['id'])) { ... }


Циклы: Вычисляй заранее


Самая частая ошибка новичков — вызов функций внутри условия цикла.

Пример плохого кода:
for ($i = 0; $i < count($items); $i++) {
   
...

Six-seven в архитектуре ПО

Если вы родитель школьника или просто иногда заходите на YouTube Shorts, вы слышали этот звук. «Six-seven!» (шесть-семь). Выкрик без смысла, сопровождаемый характерным жестом взвешивания невидимых гантелей.


На вопрос «Как дела?» — шесть-семь. «Какая оценка?» — шесть-семь. Это идеальный ответ эпохи постиронии. И чем дольше я смотрю на релизы современных JavaScript-фреймворков в 2026 году, тем больше понимаю: они работают по тому же принципу.

Что такое синдром «Шести-Семи» в разработке?


В мире разработки софта есть понятие Overengineering (избыточное проектирование). Это когда для создания простого списка покупок пишется микросервисная архитектура на Kubernetes, настраивается CI/CD пайплайн и внедряются нейросети для предсказания того, какой хлеб вы купите завтра.

Мем «six-seven» стал идеальным символом этого явления. Разработчики крупных библиотек добавляют функции не потому, что их просили пользователи, а потому что:
  1. Нужно выпустить мажорную версию (v2.0 звучит лучше, чем v1.9).
  2. Главный
...

Как стать источником для ИИ (Почему нейросети цитируют одних и игнорируют других)

SEO
Вы наверняка замечали: когда спрашиваешь у нейросети сложный вопрос, она часто цитирует Википедию, Хабр или крупные СМИ. Но почему одни сайты попадают в ответы с указанием источника, а другие остаются невидимыми?

Дело не только в возрасте домена. Нейросети ищут не просто текст, они ищут структурированную истину.

Структура важнее воды


Нейросеть читает вашу страницу не так, как человек. Человек может пробежать глазами полотно текста и уловить суть. Модель ищет четкие блоки:
  • Определения: Четкое начало абзаца («Что такое...», «Это...»)
  • Списки и таблицы: Мы обожаем структурированные данные. Если информация оформлена списком (<ul> или <ol>) или таблицей, шансы попасть в ответ растут кратно.
  • Прямые ответы: Если ваш заголовок H2 звучит как вопрос пользователя («Как проверить индексацию?»), а первый же абзац дает прямой ответ — вы идеальный кандидат на цитату.


E-E-A-T: Опыт, Экспертность, Авторитет, Доверие


Для Google и обучающих выборок Яндекса критически важно, кто написал текст.
  • Авторство: У
...

Почему много статей в день убьют ваш сайт, даже если они гениальные

В мире контент-маркетинга живет опасный миф: «Чем больше контента, тем выше трафик». Вебмастера старой школы до сих пор верят, что поисковики — это простые роботы, которые любят объем. Залил тысячу текстов за ночь — вышел в топ по всем запросам.

На самом деле в текущем году такая стратегия работает как выстрел себе в ногу. Поисковые системы стали умнее, а алгоритмы E-E-A-T (Опыт, Экспертиза, Авторитетность, Доверие) от Google и новые метрики Яндекса жестко наказывают за «спам-контент».

Как думает робот: Фактор доверия к домену


Поисковая система оценивает не отдельную статью, а весь ресурс целиком. У неё есть понятие «Краулинговый бюджет» — это лимит страниц, которые робот готов обойти на вашем сайте за один визит.

  • Для гигантов: Если вы — РБК, Habr или крупное СМИ, и выдаете 100 новостей в час, Яндекс понимает: у вас редакция из 100 человек. Робот выделяет вам огромный краулинг-бюджет.
  • Для малого сайта/блога: Если вчера у вас было 50 страниц, а сегодня стало 200 (вы залили архив старых
...