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"), ""))
}