Python ke php converter online

Deskripsi Proyek

# PHP ke PYTHON

Skrip python untuk mengubah kode php sederhana menjadi python,
Itu hanya mengubah sintaks dasar
Itu yang saya gunakan dalam konversi mpg25/Instagram-API di PHP ke danleyb2/Instagram-API di PYTHON

## penggunaan
```
$python php2python. py -h

penggunaan. php2python. py [-h] -s SCRIPT [-o]

Konverter sintaks PHP ke PYTHON

argumen opsional
-h, --help tampilkan pesan bantuan ini dan keluar
-s SCRIPT, --script SCRIPT
Jalan ke skrip PHP
-o, --overwrite Timpa skrip Python jika ada

```

```
$python php2python. py -s test_scripts/Caption. php

Konversi. test_scripts/Keterangan. php. File keluaran akan menjadi. test_scripts/Keterangan. py
# Hapus pembukaan dan penutupan # ubah $this-> menjadi self
# mengubah. ke
# Hapus semua }
# hapus namespace. membutuhkan_sekali. sertakan_sekali
# ubah $var terproteksi menjadi diri sendiri. var = Tidak ada lalu pindah ke __init__
# konversi publik. fungsi yang dilindungi ke def
# tambahkan `self` ke tanda tangan fungsi
# kelas bukan turunan untuk memperluas `objek`
# ubah $ menjadi ''
# mengubah ;
# ubah baru menjadi ''
Dikonversi. test_scripts/Keterangan. php. ke. test_scripts/Keterangan. py. { Ayo, Periksa Bukti. ) }

```

```
$python php2python. py -s test_scripts/Caption. php
Maaf, Skrip python test_scripts/Caption. py sudah ada, gunakan -o untuk menimpa

```

Ini dimaksudkan sebagai bantuan porting saja. Anda masih perlu meninjau PHP yang dihasilkan dan melakukan penyesuaian. Tapi itu menangani banyak pekerjaan kasar dan kasus umum

py2php adalah salinan pyjs yang banyak dimodifikasi. py dari proyek piyama. pyjs. py ditulis untuk menerjemahkan python ke javascript. py2php mengubah semantik keluaran dari JS ke php

Contoh

Berikut adalah program python sederhana untuk menghasilkan urutan angka fibonacci

def gen_fib(count):
    i = 1
    if count == 0:
        fib = []
    elif count == 1:
        fib = [1]
    elif count == 2:
        fib = [1,1]
    elif count > 2:
        fib = [1,1]
        while i < (count - 1):
            fib.append(fib[i] + fib[i-1])
            i += 1

    return fib

print gen_fib(10)

dan inilah PHP yang dibuat secara otomatis

<?php
require_once('py2phplib.php');
function gen_fib($count) {
    $i = 1;
    if (($count == 0)) {
        $fib = array();
    }
    else if (($count == 1)) {
        $fib = array(1);
    }
    else if (($count == 2)) {
        $fib = array(1, 1);
    }
    else if (($count > 2)) {
        $fib = array(1, 1);
        while (($i < ($count - 1))) {
            $fib[] = ($fib[$i] + $fib[($i - 1)]);
            $i += 1;
        }
    }
    return $fib;
}

pyjslib_printFunc(gen_fib(10));
_

Keduanya menghasilkan output yang sama persis

$ python fibonacci.py 
[1, 1, 2, 3, 5, 8, 13, 21, 34, 55]

$ php fibonacci.py.php 
[1, 1, 2, 3, 5, 8, 13, 21, 34, 55]

File py2phplib. php berisi beberapa fungsi PHP yang meniru kata kunci python seperti print, range, dll. py2php secara otomatis mengganti nama kata kunci ini untuk memanggil fungsi yang ditiru

Lihat di direktori tes untuk lebih banyak contoh

translate_python_to_php

translate_python_to_php adalah skrip pembungkus untuk py2php. Jalankan di direktori mana pun tanpa argumen dan itu akan mencoba menerjemahkan semua. file py ke dalam. file php

Jalankan dengan satu atau lebih argumen, dan itu akan mencoba menerjemahkan file dalam daftar argumen

Penggabungan String

Python menggunakan + untuk penggabungan string dan PHP menggunakan dot (. )

Karena variabel python diketik secara dinamis, py2php tidak mungkin mengetahui apakah variabel yang diberikan mewakili string atau angka

py2php mencoba menangani ini dengan

  1. Jika salah satu sisi ekspresi adalah konstanta string, maka gunakan operator titik

  2. Jika salah satu sisi ekspresi adalah variabel yang berisi "str" ​​atau "buf" pada namanya, maka gunakan operator dot

  3. Untuk semua kasus lainnya, gunakan operator plus

Ini berarti bahwa jika nama variabel string Anda tidak mengandung "str" ​​atau "buf" maka Anda perlu mengubah secara manual semua kejadian terkait "+" menjadi ". "

Konvensi Pemindahan

Saat mem-porting kode python, saya secara manual membuat subdirektori bernama _autotranslated, tempat saya memindahkan semua yang asli. file py. Saya kemudian menjalankan translate_python_to_php yang membuat semua terjemahan. file php. Saya kemudian menyalin (tidak bergerak. ) file yang dihasilkan tersebut kembali ke direktori induk untuk ditinjau dan disesuaikan, untuk menyelesaikan port

Dengan cara ini, direktori _autotranslated hanya berisi yang asli. py file dan autogenerated. file php. Ini akan membuat segalanya lebih mudah di masa depan ketika proyek python upstream merilis versi baru. Maka kami hanya akan menyalin yang baru. py ke direktori tmp baru, jalankan kembali autotranslater, dan kemudian kita memiliki PHP PHP diff yang bagus yang dapat kita gunakan sebagai bantuan porting. Setelah port selesai, file direktori tmp harus menggantikan konten direktori _autotranslated