Halo, Habr! Kami dengan senang hati mempersembahkan rilis besar kedua dari PhpStorm tahun ini!
Di bawah potongan adalah analisis rinci dari semua perubahan penting dan fitur baru. Hati-hati - banyak gambar.
Jenis gabungan di PHP 8
PHP 8 akan memiliki begitu banyak fitur baru yang bahkan merupakan bahasa baru sampai batas tertentu. Kami mulai meluncurkan dukungan untuk delapan tipe lebih awal dan fitur besar pertama adalah tipe gabungan.
Tipe gabungan
T1|T2|...bisa digunakan di mana pun tipe bisa ditentukan sekarang: dalam argumen, properti, dan nilai kembalian. Dalam hal ini, variabel dapat mengambil salah satu tipe yang terdaftar.
Faktanya, tipe gabungan telah digunakan dalam PHPDoc untuk waktu yang lama, tetapi sekarang interpreter akan memeriksanya pada saat runtime.
Mengganti versi bahasa
Untuk melihat semua kemungkinan, Anda dapat mengganti versi bahasa ke PHP 8 secara manual di Languages & Frameworks | PHP | Tingkat bahasa PHP .
Atau jika kodenya sudah berisi penggunaan fitur baru, maka Anda bisa beralih menggunakan quick-fix (Alt + Enter).
Dan jika versi PHP ditentukan di composer.json, maka PhpStorm akan menariknya secara otomatis.
Mengonversi PHPDoc ke Jenis Gabungan Asli
Anda dapat memanggil perbaikan cepat (Alt + Enter) pada tag PHPDoc yang memiliki tipe gabungan.
Menghapus PHPDoc yang tidak perlu
Jika PHPDoc hanya berisi deklarasi tipe, sekarang dapat dihapus sebagai perbaikan cepat yang berlebihan (Alt + Enter).
Dapatkah penghapusan seperti itu selalu dianggap aman dan dilakukan secara otomatis sebelum dilakukan? Kami sedang mempertimbangkan untuk menambahkan fitur seperti itu.
Ketik validasi
PhpStorm digunakan untuk dapat menganalisis jenis dan menemukan pelanggaran berdasarkan informasi dari tag PHPDoc. Dengan deklarasi asli, kemungkinan ini telah berkembang.
Pemeriksaan dilakukan untuk semuanya: properti, argumen, nilai yang dikembalikan.
Ini sangat berguna dalam kode kompleks di mana pelanggaran tidak segera terlihat.
Jenis semu salah
Beberapa fungsi
falsesaat terjadi kesalahan. Misalnya, begini cara mereka berperilaku strpos(), array_search()dan 310 fungsi standar lainnya.
Dalam kasus ini, dimungkinkan untuk menetapkan tipe kembalian sebagai gabungan, misalnya
int|bool, tetapi sebenarnya truetidak akan pernah ada.
Untuk kasus seperti itu, pseudotype diperkenalkan
false. Ini hanya dapat digunakan dalam gabungan. Jika tidak, PhpStorm akan menyorot kode yang tidak valid.
Jenis duplikat dan redundan
Banyak kombinasi dalam serikat tipe dilarang atau tidak perlu. Misalnya:
bool|false- karena salah termasuk di dalamnyabool;Foo|Fooatauint|string|INT- pengulangan;object|User- Secaraobjectsadar berisi segala sesuatu yang lain;iterable|arrayatauiterable|Traversable-iterabletermasuk array dan Traversable;void- hanya dapat digunakan dalam nilai kembali dan hanya dengan sendirinya;falseataunull- hanya sebagai bagian dari asosiasi.
PhpStorm akan menyoroti semua pelanggaran tersebut.
Jenis nullable
Sintaks lama
?Typesekarang dianggap sebagai singkatan dari Type|null.
Tetapi singkatan c
?tidak dapat digunakan dalam gabungan karena terdapat ambiguitas yang tidak dapat dipecahkan.
Untuk kasus seperti itu, PhpStorm memiliki perbaikan cepat (Alt + Enter).
Mengubah tipe dengan pewarisan
Ada dua aturan untuk metode:
Jenis parameternya kontravarian , yaitu dapat diperpanjang.
Jenis hasil adalah kovarian , yaitu hanya dapat dipersempit.
Dalam hal ini, urutan jenis tidak menjadi masalah, dan
Type1|Type2setara Type2|Type1.
Jenis properti tidak dapat diubah
Jenis properti yang diwariskan harus dikurangi menjadi induk, misalnya:
Mesin aliran kontrol baru
Pembaruan pada mesin aliran kontrol memungkinkan untuk menambahkan inspeksi baru dan memperbaiki banyak bug lama. Hasilnya, PhpStorm memahami kode tersebut dengan lebih baik.
Di beberapa tempat, Anda dapat melihat sorotan dan peringatan dari inspeksi baru. Beberapa di antaranya mungkin memerlukan perhatian Anda sebagai potensi sumber bug. Memperbaiki orang lain hanya akan membuat kode lebih bersih.
Berikut beberapa contoh inspeksi.
Variabel selalu benar atau salah
Contoh dalam file Parser.php dari doktrin / orm.
Kondisinya selalu benar.
Contoh file FormValidator.php dari symfony / form. Contoh
hasil selalu benar
Contoh di file Logger.php dari symfony / monolog-bridge.
$thisakan selalu menjadi tipeResetInterfacekarena yang satu itu lebih tinggi dalam hierarki.
Ekspresi selalu nol
Contoh di file ProcessUtils.php dari symfony / proses.
Tindakan Baru: Jenis Info (⌃⇧P / Ctrl + Shift + P)
Anda dapat mengarahkan tanda sisipan ke atas ekspresi apa pun dan memanggil tindakan tersebut untuk melihat jenis PhpStorm yang telah disimpulkan untuk ekspresi tersebut. Tersedia dari menu View | Ketik Info atau dengan tombol pintas ⌃⇧P / Ctrl + Shift + P.
Perbaikan komposer
Sejak versi 2020.1, semua tindakan dengan dependensi Composer dapat dilakukan secara langsung di PhpStorm di file composer.json. Ada beberapa perbaikan dalam rilis ini.
Dukungan untuk repositori kustom Satis / Packagist
Jika Anda menentukan sumber kustom di bagian "repositories", maka pelengkapan kode akan tersedia untuk semua paket darinya. Informasi paket dan versi akan di-cache di PhpStorm.
Selain itu, ketika beberapa versi ditentukan.
Jika versi dicantumkan dipisahkan oleh koma atau pipa (
||), maka PhpStorm sekarang akan bekerja dengan benar dan menampilkan opsi yang tersedia.
Link ke kode dan situs
Setiap paket di popup dengan informasi memiliki link ke situs.
Pengaturan alat kualitas kode
Jika ada alat kualitas kode dalam daftar dependensi yang didukung di PhpStorm, maka di seberangnya akan ada ikon kunci inggris untuk masuk ke pengaturan.
Peningkatan alat kualitas kode
Omong-omong, tentang alat berkualitas. PhpStorm 2020.2 memiliki beberapa tambahan yang berguna. Dukungan
Docker Compose
PHP_CodeSniffer, PHP CS Fixer, dan PHP Mess Detector dapat dijalankan melalui penulisan docker.
Daftar pengecualian untuk PHP_CodeSniffer
Jika
ruleset.xmlada bagian di custom "exclude-pattern", maka sekarang akan diperhitungkan dan file di jalur yang ditentukan tidak akan dianalisis di IDE.
Pemformatan melalui interpreter jarak jauh
PHP CS Fixer dan PHPCBF dapat dijalankan dengan interpreter melalui SSH, Docker, Docker Compose, Vagrant, dan lainnya.
Alat baris perintah
Semua perintah Symfony, Laravel Artisan, Drupal Drush, WP-CLI dan skrip Composer dapat dijalankan dengan sangat cepat di PhpStorm tanpa membuka terminal.
Untuk melakukan ini, tambahkan alat yang sesuai di Tools | Dukungan Alat Baris Perintah .
Kemudian, dengan mengklik, baris Jalankan apa pun akan
Ctrl-Ctrl muncul , di mana semua perintah dengan pelengkapan otomatis tersedia.
Dimulai dengan rilis ini, Anda bahkan tidak perlu mengkonfigurasi apapun untuk Symfony, Laravel dan Drush. Cukup membuka proyek, klik dan mulai masukkan perintah. ▪️ Untuk Laravel di macOS, file tersebut harus dapat dieksekusi ( ).
Ctrl-Ctrl
artisanchmod +x artisan
Selain itu, alat sekarang dapat dijalankan melalui interpreter jarak jauh (SSH, Docker, Docker Compose, Vagrant). Misalnya, Anda dapat dengan cepat menguji aplikasi PHP 8 Anda dengan menambahkan interpreter Docker dari sebuah gambar
php:rc-cli.
Pemfaktoran ulang baru: ekstraksi kelas
Kelas terlihat rapi dan bersih pada awalnya. Kemudian semakin banyak metode dan properti baru ditambahkan ke dalamnya, dan cepat atau lambat kelas sudah "membengkak" dan dipenuhi dengan tanggung jawab dari semua sisi.
Mengalokasikan sekumpulan metode dan properti terkait ke dalam kelas baru dapat membantu di sini. Inilah yang ditawarkan pemfaktoran ulang Kelas Ekstrak yang baru.
Untuk mencobanya, di dalam kelas, tekan
Ctrl+Tdan pilih Ekstrak Kelas . PhpStorm akan meminta Anda memasukkan nama kelas baru, dan Anda dapat segera memilih lebih banyak metode dan kelas untuk diambil.
Pemfaktoran ulang ini juga berfungsi untuk fungsi biasa.
Dan lebih banyak lagi untuk PHP
Inspeksi Baru: Properti yang diketik mungkin belum ditetapkan
Jika properti yang diketik dideklarasikan tetapi tidak diinisialisasi, maka upaya untuk membacanya akan menghasilkan kesalahan
TypeError(kecuali properti ajaib ditentukan __get()). PhpStorm akan menyorot membaca dari properti yang tidak diinisialisasi.
Inspeksi Baru: Larik hanya digunakan dengan akses tulis
Contoh dari file SchemaTool.php dari doktrin / orm.
Array
$pkColumnsdalam metode gatherColumns()diperbarui, tetapi tidak pernah dibaca.
Menyesuaikan getter dan setter yang dihasilkan
Sekarang Anda dapat menyesuaikan penamaan metode dengan memilih antara
camelCase()dan snake_case().
Dan juga menyesuaikan urutan penambahannya ke kelas.
Kedua opsi tersebut tersedia di Editor | Gaya Kode | PHP di tab Pembuatan Kode .
Resolusi yang benar untuk banyak proyek dalam satu jendela
Jika Anda membuka beberapa proyek dalam satu jendela, Anda akan sering melihat kesalahan bahwa kelas telah ditentukan beberapa kali. Dan ketika mencoba untuk pergi ke definisi kelas, Anda masih harus memilih yang mana.
PhpStorm 2020.2 tidak memiliki bug ini dan transisi berfungsi seperti yang diharapkan.
Prioritas lebih rendah untuk kelas dari vendor
Dalam daftar penyelesaian otomatis, prioritas akan diberikan ke kelas langsung dari proyek, dan entitas dari folder
vendordan file PHAR akan menggunakan yang lebih rendah .
Tambahkan kursor ke semua baris yang dipilih
Tindakan baru Add Caret Per Selected Line menambahkan kursor di akhir setiap baris yang dipilih dan membatalkan pilihannya. Dapat dipanggil dengan tombol ⌥⇧G / Alt + Shift + G.
Dukungan penuh untuk permintaan pull GitHub
Dukungan permintaan tarik dasar muncul di PhpStorm 2018.3. Ada pembaruan sejak saat itu, tetapi masih banyak tindakan yang harus dilakukan untuk beralih ke browser.
Di PhpStorm 2020.2, semua pekerjaan pull request dapat dilakukan langsung di IDE!
Anda dapat mengakses permintaan tarik dari VCS | Git | Lihat Permintaan Tarik , dari toolbar atau dengan mengklik
Alt+7. Yang pertama adalah daftar permintaan yang tersedia dengan opsi pencarian dan pemfilteran.
Mengklik permintaan tarik akan membuka informasi mendetail tentangnya: pengulas, tag, file yang diubah, garis waktu.
Seluruh alur peninjauan dapat dilakukan di sana. Mulai dan minta tinjauan, komentari perubahan di tingkat baris atau komit, kirim tinjauan, gabungkan.
Hasil pemeriksaan, termasuk dari CI, akan ditampilkan di bawah garis waktu.
Sebelumnya, untuk menggabungkan permintaan tarik, Anda harus membuat cabang lokal. Sekarang tidak diperlukan dan Anda dapat menggabungkan dengan menekan sebuah tombol.
Dukungan OpenAPI
Plugin Spesifikasi OpenAPI tersedia untuk semua JetBrains IDE dan berfungsi sejak 2020.2. Dalam file spesifikasi Open API (
openapi.yaml/ openapi.jsondan swagger.yaml/ swagger.json), ini menyediakan penyorotan, augmentasi, validasi, dan navigasi.
Selain itu, tersedia opsi berikut:
- Integrasi dengan Swagger UI - langsung ditampilkan di jendela IDE.
- Pembuatan kode.
- Perbedaan struktural untuk spesifikasi OpenAPI - memungkinkan Anda mendeteksi perubahan signifikan dengan cepat.
- Ikon gerbang untuk membuat permintaan dengan cepat di klien HTTP.
- Menyelesaikan titik akhir di klien HTTP.
- Ubah nama refactoring - jika Anda mengganti nama titik akhir dalam spesifikasi, maka secara otomatis akan diganti namanya dalam permintaan klien HTTP.
Widget Inspeksi Baru
Sudut kanan atas editor sekarang menampilkan widget dengan jumlah masalah di file saat ini.
Dengan menggunakan panah, Anda dapat dengan cepat melompat ke masalah berikutnya / sebelumnya (sebelumnya ini dapat dilakukan dengan tombol
F2/ Shift+F2).
Di widget, Anda dapat memilih tingkat masalah yang akan ditampilkan, misalnya, hanya kesalahan sintaks atau semua masalah.
Dan dengan mengklik widget tersebut, jendela Masalah baru akan terbuka dengan daftar semua masalah yang terdeteksi di file.
Kontrol versi
Git dari WSL 2
PhpStorm sekarang dapat menggunakan biner WSL Git. Selain itu, IDE itu sendiri menentukan apakah WSL diinstal dan apakah Git tersedia di dalamnya.
Pengaturan tersedia di Preferensi | Kontrol Versi | Git .
️ Git hanya akan bekerja dengan WSL2, karena Git dari WSL1 tidak stabil dan dapat menyebabkan hasil yang salah dari perintah Git.
Peningkatan UI untuk membandingkan cabang
PhpStorm memungkinkan Anda untuk membandingkan setiap cabang dan melihat komit mana yang masuk ke salah satu cabang tersebut. Untuk melakukan ini, pilih cabang mana saja dari yang tersedia di popup VCS | Cabang dan pilih Bandingkan dengan Arus dari menu konteks .
Di PhpStorm 2020.2, perbedaan log dan komit akan ditampilkan langsung di editor. Hal ini memungkinkan lebih banyak informasi untuk ditampilkan di layar.
Dialog perintah diperbarui
Dialog untuk perintah Git Merge, Pull dan Rebase telah didesain ulang dan disatukan. Menambahkan opsi yang hilang dan sekarang Anda dapat melihat perintah Git lengkap yang akan dijalankan.
Semua perintah tersedia di VCS | Git .
Tindakan baru: hapus komit
Komit lokal tambahan atau sementara sekarang dapat dihapus langsung dari log di PhpStorm. Untuk melakukan ini, pilih Jatuhkan Komit dari menu konteks di komit .
Tindakan baru: menggabungkan komitmen menjadi satu (squash)
Anda juga dapat menggabungkan beberapa komit menjadi satu. Misalnya, akan lebih mudah untuk menghapus riwayat sebelum membuat permintaan tarik atau sebelum mendorong perubahan. Pilih
beberapa komit di log dan pilih Komit Squash ... dari menu konteks.
Untuk kedua aksi tersebut, di balik layar sudah selesai
git rebase.
Alat DB
PhpStorm out of the box mencakup hampir semua fitur DataGrip yang tercakup dalam ikhtisar rilis DataGrip 2020.2 dari rekan kami.
Web
Dan, seperti biasa, semua pembaruan dari WebStorm 2020.2 juga disertakan dalam PhpStorm. Misalnya, menggunakan plugin , Prettier dapat digunakan sebagai pemformat default untuk file PHP juga.
Anda dapat mengunduh PhpStorm 2020.2 di halaman " What's new ".
Dan berikut adalah video (dalam bahasa Inggris) yang menunjukkan fitur-fitur utama dari rilis tersebut:
Selama ini. Terima kasih telah membaca sampai akhir! Kami akan dengan senang hati memiliki pertanyaan, keinginan, laporan bug, dan hanya pemikiran di komentar.
Tim PhpStorm JetBrains Anda