GO OUTPUT
Как писать PHP, чтобы Go был быстрее
Компилятор умеет оптимизировать много старого PHP, но лучший результат получается, когда код даёт анализатору понятные типы, стабильные классы и предсказуемые массивы.
Помогает компилятору
- Указывайте типы аргументов и return type там, где они известны.
- Передавайте массивы и DTO явно, не прячьте структуру в глобальных переменных.
- Держите entrypoint, роутинг и сервисы в понятных классах с Composer autoload.
- Используйте простые условия и явные fallback-и вместо глубокой магии и произвольных callback-ов.
Чаще даёт fallback
- Динамические имена классов без понятного namespace-префикса.
- Массивы, которые в разных ветках становятся строкой, объектом и числом.
- Магические свойства и методы без стабильной инициализации.
- Большие vendor/test/dev директории, которые не используются в runtime, но попадают в анализ.
Хороший стиль для анализа
PHP исходник
function userId(array $user): int
{
return (int) ($user['id'] ?? 0);
}
Типичный Go-вывод
func f_userId(v_user php.Array) int64 {
return php.ArrayGetIntDefault(v_user, php.StrKey("id"), 0)
}
Почему так быстрее
Компилятор видит array → int и может сгенерировать прямой typed-accessor вместо общего PHP-приведения в рантайме.