Құжаттама

php2go құжаттамасы

Пайдаланушыға арналған практикалық нұсқаулық: ZIP дайындау, entrypoint таңдау, рұқсат етілген командаларды іске қосу, artifact жүктеу және жиі кездесетін компиляция қателерін түсіну.

Алғашқы build-ке жылдам жол
  1. Жобаны құпияларсыз және артық файлдарсыз ZIP етіп жинаңыз.
  2. Entrypoint бар екенін тексеріңіз, әдетте public/index.php.
  3. Compile алдында report/check/deps іске қосыңыз.
  4. Artifact жүктеп, бинарникті README_RUN бойынша іске қосыңыз.
COMPAT

PHP compatibility

php2go мақсаты — маңызды жерде PHP behavior сақтау және жылдам Go code генерациялау. Жоба қаншалықты static және түсінікті болса, нәтиже соншалықты fallback-сіз болады.

Әдетте жақсы компиляцияланады

  • Классикалық MVC apps, routers, controllers, services және templates.
  • Composer autoload, кәдімгі classes, inheritance, interfaces және көптеген standard PHP functions.
  • Arrays, strings, JSON, dates, files, sessions және HTTP request өңдеу.
  • Typed code және class байланыстары analysis арқылы табылатын ескі untyped code.

Назар қажет етеді

  • call_user_func($_REQUEST[...]) және new $unknown сияқты толық dynamic calls.
  • Сирек PHP extensions, custom stream wrappers, күрделі GD/Imagick/OpenSSL edge cases.
  • Маңызды logic кездейсоқ test/dev файлдарда жатқан немесе conditional include арқылы қосылатын жобалар.
  • Process-global state, ерекше ini немесе shell commands-қа қатты байланған code.
Report не үшін керек

report командасы компилятор көрген нәрсені көрсетеді: classes, functions, reachable code, fallback және қауіпті орындар. Бұл support үшін бірінші құжат.

Direct generation мысалы

Types және array shape түсінікті болса, компилятор PHP dynamics орнына кәдімгі typed Go code шығара алады.

PHP source
final class UserService
{
    public function name(array $row): string
    {
        return trim((string) ($row['name'] ?? ''));
    }
}
Typical Go output
func (this *UserService) Name(v_row php.Array) string {
    return php.Trim(php.ArrayGetStringDefault(v_row, php.StrKey("name"), ""))
}