Konversi php 7 ke php5

Saya punya proyek besar di php 5 dan didokumentasikan dengan baik. Sekarang, saya ingin bermigrasi ke php 7. 2 dan saya sudah memeriksa kompatibilitasnya menggunakan phpstan dan semuanya baik-baik saja. Jadi, saya ingin tahu apakah ada alat yang dapat secara otomatis mengubah anotasi php 5 menjadi php 7 (seperti deklarasi fungsi dan variabel)?

Terima kasih sebelumnya

PHP 7 telah diluncurkan dengan fitur menarik dan peningkatan kinerja yang drastis. Ada penurunan konsumsi memori dan banyak kesalahan fatal diubah menjadi pengecualian

Langkah-langkah untuk memutakhirkan dari PHP 5 ke PHP 7

Untuk memutakhirkan dari PHP 5 ke PHP 7, ada 3 langkah utama. Proses yang tercantum di bawah ini akan sangat membantu ketika basis kode sedang atau besar

  • Memilih IDE (JetBrains, NetBeans, Eclipse, Visual Studio Code, dll. )
  • Proses peningkatan kode
  • Fase pengujian

Memilih IDE

Selama proses pemutakhiran, sulit untuk mengetahui tentang semua fungsi yang tidak digunakan lagi dan dihapus secara manual;

  • Pilih IDE cerdas dan atur lingkungan ke PHP 5. 6
  • Buka seluruh proyek Anda di IDE dan periksa kesalahan dan saran yang diberikan olehnya untuk memperbaiki kode
  • Jika memungkinkan, lakukan refactoring di localhost daripada di server pengembangan yang terhubung melalui SSH
  • Melakukannya di localhost akan mempersingkat waktu pengembangan dan memungkinkan pemantauan fungsi yang tidak digunakan lagi dan dihapus

Kode untuk Upgrade dari PHP5 ke PHP7

Selesaikan semua kesalahan termasuk kesalahan pemberitahuan dan kesalahan usang di PHP 5. 4. * untuk menjalankan kode Anda di PHP 7. 0 versi

  • Setel pelaporan kesalahan ke E_ALL seperti di bawah ini. Misalnya. error_reporting(E_ALL ^ ​​E_STRICT);
  • Selesaikan semua kesalahan termasuk kesalahan pemberitahuan dan kesalahan usang
  • Buat lapisan abstraksi untuk operasi basis data dengan menggunakan ekstensi PDO karena PDO mendukung banyak basis data
  • Jika basis kodenya besar, selesaikan kesalahan untuk membuatnya berfungsi di PHP 7. 0. Posting itu, Anda dapat menulis ulang modul kode Anda dengan modul berdasarkan kelayakan Anda
  • Jika memungkinkan, gunakan fitur baru untuk menyederhanakan kode

Fase Pengujian

  • Pertahankan log untuk kesalahan basis data
  • Buat log untuk kesalahan PHP berdasarkan tanggal
  • Buat server pengujian baru i. e. itu harus berupa salinan dari server produksi dan merilisnya untuk beberapa pelanggan untuk pengujian dan pemantauan selama beberapa bulan
  • Lanjutkan pengujian Anda selama periode pengujian tersebut
  • Jika semuanya baik-baik saja, Anda dapat memindahkannya ke produksi

Daftar ekstensi dan fungsi yang dihapus di PHP 7. * dan alternatif ekstensi dan fungsi di dalamnya

Perubahan Tidak Kompatibel Mundur di PHP 7. *

Fungsi alternatif atau modul atau daftar pustaka untuk ini

ekstensi mysql dihapus. Kami tidak dapat menggunakan fungsi mysql_*. Misalnya. mysql_query();

Harus menggunakan fungsi pdo atau mysqli untuk menangani operasi basis data

$HTTP_RAW_POST_DATA dihapus

file_get_contents("php. //memasukkan");

ereg_* dihapus

fungsi preg_* dapat digunakan sebagai alternatif

Mssql, sybase_ct

PDO mungkin ekstensi alternatif

call_user_method();
call_user_method_array();

call_user_func();
call_user_func_array();

membelah(); . 4 itu sendiri

Fungsi alternatif adalah meledak(), str_split();

__autoload() (7. 2) fungsi dihapus

spl_autoload_register();

$php_errormsg(variabel) dihapus

error_get_last();

masing-masing() (7. 2) fungsi dihapus

--

Sebagian besar fungsi mcrypt_* tidak digunakan lagi dan dihapus di PHP7. * versi

--

Sintaks tangan pendek dihapus

,

sintaks ini akan menjadi yang standar

Perubahan tidak kompatibel mundur

  • Perubahan penanganan variabel

interpretasi PHP5. ${$first['light][‘year']}, $foo->{$light['year']}

interpretasi PHP 7. ($$pertama)['cahaya']['tahun'], ($pertama->$cahaya)['tahun']

  • list() tidak lagi menetapkan variabel dalam urutan terbalik

daftar($a[], $a[], $a[]) = [1, 2, 3];

print_r($a);

Keluaran PHP5. array([0]=>3, [1]=>2, [2]=>1);

Keluaran PHP7. array([0]=>1, [1]=>2, [2]=>3);

  • Penetapan list() kosong telah dihapus

daftar() = $a;

daftar(,,) = $a;

  • Perubahan ke Pembagian Dengan Nol

PHP5

var_dump(1/0);

Keluaran. Peringatan. Pembagian dengan nol di %s pada baris %d

bool (salah)

var_dump(0%0);

Peringatan. Pembagian dengan nol di %s pada baris %d

bool (salah)

PHP 7

var_dump(1/0);

Peringatan. Pembagian dengan nol di %s pada baris %d

mengambang(INF)

var_dump(0%0);

Kesalahan fatal PHP. Divisi Tidak Tertangkap OlehZeroError. Modulo dengan nol di baris %s %d

  • foreach tidak lagi mengubah pointer array internal

PHP5

$array = [0, 1, 2];

foreach ($array as &$val) {

var_dump(current($array));

}

Keluaran

int(1), int(2), bool(salah)

PHP 7

$array = [0, 1, 2];

foreach ($array as &$val) {

var_dump(current($array));

}

Keluaran

int(0), int(0), int(0)

  • Objek baru tidak dapat ditetapkan dengan referensi

Uji kelas {}

$testobj =& Tes baru;

Keluaran PHP5

Tidak digunakan lagi. Menetapkan nilai pengembalian baru dengan referensi tidak digunakan lagi di /path/test. php di baris 3

Keluaran PHP7

Kesalahan parse. kesalahan sintaksis, 'baru' (T_NEW) yang tidak terduga di /path/test. php di baris 3

Beberapa Fitur Baru

Konstanta array dapat didefinisikan seperti di bawah ini
Contoh

define('Bahasa Pemrograman', [
'php',
'Jawa',
'rubi'
]);

Visibilitas Konstan Kelas
Contoh

kelas ConstantDemoClass
{
const PUBLIC_CONSTANT_FIRE1 = 1;
publik const PUBLIC_CONSTANT_FIRE2 = 2;
const terlindungi PROTECTED_CONSTANT_FIRE3 = 3;
const pribadi PRIVATE_CONSTANT_FIRE4 = 4;
}

Opsi Sesi

session_start() sekarang menerima array opsi yang mengesampingkan arahan konfigurasi sesi yang biasanya diatur dalam php. ini

Apakah PHP5 kompatibel dengan PHP7?

Anda perlu mengetahui bahwa sebagian besar, PHP 5. kode x dapat berjalan di PHP 7 . Di PHP 7, ada beberapa perubahan yang tidak kompatibel ke belakang, sehingga aplikasi dibangun dengan PHP 5.

Bagaimana cara mengonversi PHP5 ke PHP7?

Kode untuk Memutakhirkan dari PHP5 ke PHP7 . Misalnya. error_reporting(E_ALL ^ ​​E_STRICT); . Buat lapisan abstraksi untuk operasi basis data dengan menggunakan ekstensi PDO karena PDO mendukung banyak basis data. Set error reporting to E_ALL as below. Eg: error_reporting(E_ALL ^ E_STRICT); Solve all the errors including notice errors and deprecated errors. Create an abstraction layer for database operations by using PDO extension as PDO supports multiple databases.

Apa itu PHP5 vs PHP7?

PHP 7 adalah versi perbaikan dari PHP 5 yang memberikan kinerja lebih cepat dengan menggunakan lebih sedikit penyimpanan . Pengkodean PHP5 jauh lebih sederhana daripada pengkodean tradisional, dan PHP 7 memberi pengembang sistem pengkodean sederhana. Mesin PHP7 yang ditingkatkan dianggap sebagai desain generasi berikutnya.

Apa versi PHP sebelum PHP7?

Jika Anda tidak mengikuti PHP dengan cermat atau Anda baru mengenal pemrograman PHP, Anda harus mengetahuinya sebelum PHP 7, PHP 5. 6 dulunya adalah versi stabil.