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