PHP 8.4 akhirnya hadir, membawa perubahan menarik yang ditetapkan untuk mengubah cara pembangun bekerja! Dengan setiap versi baharu, PHP terus membuktikan mengapa ia merupakan alat yang sangat penting dalam landskap pembangunan web hari ini.
Prasyarat
Artikel ini menganggap anda mempunyai pengetahuan asas tentang bahasa pengaturcaraan PHP.
Perisian yang Saya Gunakan untuk Pembangunan PHP
Laravel Herd: digunakan untuk mengurus versi PHP dan pelayan Nginx saya.
PHPStorm: IDE hebat dengan IntelliSense dan copilot AI yang baik.
Laragon: Persekitaran pembangunan tempatan yang mudah digunakan yang menyokong PHP dan teknologi lain.
Keterlihatan Harta Asimetri (versi 2)??
Dalam PHP, keterlihatan sifat objek secara tradisinya adalah simetri. Ini bermakna bahawa operasi dapatkan dan tetapkan untuk harta tanah mesti berkongsi keterlihatan yang sama—awam, peribadi atau dilindungi—tetapi tidak boleh berbeza.
Contohnya, jika harta benda adalah umum, kedua-dua membaca dan menulis kepadanya adalah umum, tanpa cara untuk membenarkan satu operasi tanpa yang lain.
Dalam konteks, apabila anda mengisytiharkan harta kelas awam, ia menjadi boleh ubah, membenarkannya dibaca dan diubah suai dari luar kelas.
Walau bagaimanapun, dengan kemunculan keterlihatan asimetri, anda kini boleh menentukan skop berasingan untuk sifat membaca dan menulis.
Ini bermakna harta boleh dibaca dalam satu konteks dan boleh ditulis dalam konteks lain, menawarkan kawalan yang lebih besar terhadap cara sifat diakses dan diubah suai.
class Animal{ public private(set) string $name; public setName(string $foo){ $ths->name = $foo; } } $animal = new Animal(); echo $animal->name; // This will run correctly
Kita boleh mempunyai harta yang didedahkan kepada umum dan harta yang ditetapkan dijadikan peribadi. Ini bermakna harta itu tidak boleh dikemas kini di luar kelas, menjadikannya tidak boleh diubah.
Jika anda cuba mengubah suai sifat $name, anda akan mendapat ralat yang menunjukkan anda tidak boleh mengubah suai harta tersebut kerana skop keterlihatan.
Berikut ialah beberapa perkara penting yang perlu diberi perhatian tentang keterlihatan tidak simetri:
Ruang tidak dibenarkan dalam pengisytiharan set-keterlihatan. private(set) betul. private( set ) tidak betul dan akan mengakibatkan ralat penghuraian.
Jika harta diisytiharkan sebagai awam, keterlihatan utama boleh ditinggalkan. Contohnya, peribadi awam(set) dan peribadi(set) akan berkelakuan sama, kerana keterlihatan awam tersirat.
Hanya sifat yang ditaip dibenarkan mempunyai keterlihatan berasingan untuk operasi yang ditetapkan. Ini bermakna anda tidak boleh menggunakan keterlihatan asimetri pada sifat yang tidak ditaip dalam PHP.
Keterlihatan yang ditetapkan mestilah sama atau lebih terhad daripada keterlihatan get. Contohnya, public protected(set) dan protected protected(set) adalah sah, tetapi protected public(set) akan mengakibatkan ralat sintaks.
Ketahui lebih lanjut tentang keterlihatan asimetri, termasuk contoh lain untuk tatapan anda.
Kait harta benda ?
Property hook ialah ciri hebat PHP 8.4 yang memperkenalkan cara untuk pembangun menambah mendapatkan dan menetapkan arahan terus kepada pembolehubah tanpa membuat kaedah secara ekspresif untuk membaca dan menulis kepada pembolehubah.
Sebagai alternatif, __get dan __set kaedah sihir boleh digunakan, tetapi ini menjadikan kod lebih verbose, boleh memperkenalkan ralat dan memecahkan alat analisis statik.
Adalah selamat untuk mengatakan reka bentuk dan sintaks cangkuk harta adalah serupa dengan Kotlin tetapi kebanyakannya dipengaruhi oleh bahasa pengaturcaraan C# dan Swift.
Dalam PHP 8.3, kita boleh mencipta kelas dengan sifat dalam pembinanya dan ia memberi kita keupayaan untuk membaca dan menulis pada harta itu.
class Animal{ public private(set) string $name; public setName(string $foo){ $ths->name = $foo; } } $animal = new Animal(); echo $animal->name; // This will run correctly
Masalah dengan pendekatan ini ialah apabila kami memutuskan untuk menulis kepada harta itu, kami sama ada menggunakan kaedah sihir __set atau secara ekspresif mencipta kaedah untuk memutasi pembolehubah, yang mungkin menyebabkan pecahnya pangkalan kod ke bawah baris.
Cangkok harta membolehkan pembangun membuat arahan yang ditetapkan dengan segera selepas membuat harta itu.
class Car { public function __construct(public string $model) { } }
Perhatikan bahawa nilai yang dihantar kepada arahan yang ditetapkan mestilah jenis yang sama dengan sifat, jika tidak, ralat akan dilemparkan.
Anda boleh menghantar jenis lain kepada arahan yang ditetapkan dan menukarnya kepada jenis yang betul sebelum menulis kepada harta, seperti yang dilihat di bawah:
class Car{ public string $model{ set (string $value) { if(strlen($value) === 0){ throw new ValueError("Model name cannot be empty"); } $this->model = $value; } } }
Contoh di atas menunjukkan cara kita boleh menerima pembolehubah jenis kompaun dengan selamat daripada arahan yang ditetapkan dan menghuraikannya kepada jenis yang betul yang ditakrifkan oleh harta itu.
Anda boleh meninggalkan hujah yang dihantar kepada arahan yang ditetapkan jika ia sama dengan jenis sifat. Contohnya, dua kaedah di bawah adalah sah dan berkelakuan serupa.
class Car{ public string $year{ set (string|number $value) { $year = intval($value); if($year year= $value; } } }
Perhatikan bahawa argumen lalai kepada $value jika ditinggalkan. Sintaks ini biasa dalam bahasa pengaturcaraan seperti Kotlin dan C#.
Memulakan Kelas Tanpa Tanda Kurung Tambahan
Sebelum ciri ini, mengakses ahli kelas dalam PHP melibatkan penambahan tanda kurungan tambahan di sekeliling kelas.
// --------------------------METHOD 1---------------------------- public string $model{ set (string $value) { if(strlen($value) === 0){ throw new ValueError("Model name cannot be empty"); } $this->model = $value; } } // --------------------------METHOD 2---------------------------- public string $model{ set { if(strlen($value) === 0){ throw new ValueError("Model name cannot be empty"); } $this->model = $value; } }
Jika anda tidak membungkus panggilan Kereta() baharu dalam kurungan, anda akan mendapat ralat penghuraian.
Sintaks baharu membolehkan kami mengakses kaedah, sifat dan pemalar tanpa memerlukan tanda kurung tambahan.
class Car { public function getName(){ return "Toyota Camry"; } } $carName = (new Car())->getName();
Untuk butiran penuh perubahan yang dicadangkan ini, lihat butiran dalam RFC.
Memperkenalkan Fungsi Tatasusunan Baharu
Fungsi pembantu baharu akan datang ke PHP 8.4.
Sesetengah fungsi ini sudah mempunyai pelaksanaannya dalam Laravel Arr atau pembantu Koleksi.
Fungsi array_find_key()
Fungsi array_find_key($array, $callback) mengembalikan kunci elemen pertama yang kaedah $callback mengembalikan benar. Jika tiada unsur yang memenuhi syarat, fungsi mengembalikan null.
class Animal{ public private(set) string $name; public setName(string $foo){ $ths->name = $foo; } } $animal = new Animal(); echo $animal->name; // This will run correctly
Fungsi array_find()
Fungsi array_find_key() direka untuk mencari melalui tatasusunan dan mengembalikan kunci elemen pertama yang memenuhi syarat yang ditentukan oleh fungsi panggil balik.
Begitu juga dengan array_find_key(), ia mengembalikan null jika tiada unsur yang sepadan ditemui.
class Car { public function __construct(public string $model) { } }
Jika tiada buah dalam tatasusunan mempunyai kuantiti lebih daripada 10, fungsi itu akan mengembalikan nol.
Fungsi array_any()
Fungsi array_any() menentukan sama ada sekurang-kurangnya satu elemen dalam tatasusunan memenuhi kriteria tertentu yang ditentukan oleh fungsi penilaian yang disediakan.
Jika sekurang-kurangnya satu elemen memenuhi syarat, fungsi itu kembali benar; jika tidak, ia kembali palsu.
class Car{ public string $model{ set (string $value) { if(strlen($value) === 0){ throw new ValueError("Model name cannot be empty"); } $this->model = $value; } } }
Jika tiada nombor dalam tatasusunan yang lebih besar daripada 10, fungsi akan mengembalikan palsu.
Fungsi array_all()
Fungsi array_all() menyemak sama ada setiap item dalam tatasusunan melepasi ujian tertentu. Ia menggunakan peraturan khas (fungsi panggil balik) pada setiap item.
Jika semua item lulus ujian mengikut peraturan, maka array_all() kembali benar.
class Car{ public string $year{ set (string|number $value) { $year = intval($value); if($year year= $value; } } }
Dalam contoh ini, fungsi array_all() akan berulang melalui tatasusunan $numbers dan menggunakan fungsi panggil balik pada setiap elemen. Panggilan balik menyemak sama ada nombor itu boleh dibahagi dengan 2 (iaitu, genap).
Memandangkan semua nombor dalam tatasusunan genap, fungsi array_all() akan kembali benar dan mesej "Semua nombor genap." akan dipaparkan.
Kami telah meneliti peningkatan utama yang diperkenalkan dalam PHP 8.4. Kemas kini ini menawarkan peningkatan yang berharga untuk pembangun, termasuk ciri baharu yang berkuasa dan potensi keuntungan dalam kecekapan.
Untuk menyelami lebih mendalam semua kemas kini, termasuk contoh dan penjelasan terperinci, lawati halaman Pengumuman Keluaran PHP 8.4.0 rasmi.
Jangan lupa untuk menyemak penamatan dan perubahan keserasian ke belakang untuk memastikan peralihan yang lancar kepada versi terkini.
Apa Seterusnya? ?
Jika anda menyukai artikel itu, jangan lupa kongsikannya dengan orang lain.
Saya ingin mendengar pendapat anda—lepaskan ulasan di bawah dan mari teruskan perbualan. Cheers! ?
Ikuti saya untuk lebih banyak artikel PHP, Node.js, TypeScript dan PHP! Anda juga boleh mencari saya di Twitter atau LinkedIn.
Atas ialah kandungan terperinci PHP : Ciri dan Penambahbaikan Teratas. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Laravel memudahkan mengendalikan data sesi sementara menggunakan kaedah flash intuitifnya. Ini sesuai untuk memaparkan mesej ringkas, makluman, atau pemberitahuan dalam permohonan anda. Data hanya berterusan untuk permintaan seterusnya secara lalai: $ permintaan-

Pembalakan PHP adalah penting untuk memantau dan menyahpepijat aplikasi web, serta menangkap peristiwa kritikal, kesilapan, dan tingkah laku runtime. Ia memberikan pandangan yang berharga dalam prestasi sistem, membantu mengenal pasti isu -isu, dan menyokong penyelesaian masalah yang lebih cepat

Pelanjutan URL Pelanggan PHP (CURL) adalah alat yang berkuasa untuk pemaju, membolehkan interaksi lancar dengan pelayan jauh dan API rehat. Dengan memanfaatkan libcurl, perpustakaan pemindahan fail multi-protokol yang dihormati, php curl memudahkan execu yang cekap

Laravel menyediakan sintaks simulasi respons HTTP ringkas, memudahkan ujian interaksi HTTP. Pendekatan ini dengan ketara mengurangkan redundansi kod semasa membuat simulasi ujian anda lebih intuitif. Pelaksanaan asas menyediakan pelbagai jenis pintasan jenis tindak balas: Gunakan Illuminate \ Support \ Facades \ http; Http :: palsu ([ 'Google.com' => 'Hello World', 'github.com' => ['foo' => 'bar'], 'forge.laravel.com' =>

Adakah anda ingin memberikan penyelesaian segera, segera kepada masalah yang paling mendesak pelanggan anda? Sembang langsung membolehkan anda mempunyai perbualan masa nyata dengan pelanggan dan menyelesaikan masalah mereka dengan serta-merta. Ia membolehkan anda memberikan perkhidmatan yang lebih pantas kepada adat anda

Artikel membincangkan pengikatan statik lewat (LSB) dalam PHP, yang diperkenalkan dalam Php 5.3, yang membolehkan resolusi runtime kaedah statik memerlukan lebih banyak warisan yang fleksibel. Isu: LSB vs polimorfisme tradisional; Aplikasi Praktikal LSB dan Potensi Perfo

Artikel ini membincangkan menambah fungsi khusus kepada kerangka kerja, memberi tumpuan kepada pemahaman seni bina, mengenal pasti titik lanjutan, dan amalan terbaik untuk integrasi dan debugging.

Alipay Php ...


Alat AI Hot

Undresser.AI Undress
Apl berkuasa AI untuk mencipta foto bogel yang realistik

AI Clothes Remover
Alat AI dalam talian untuk mengeluarkan pakaian daripada foto.

Undress AI Tool
Gambar buka pakaian secara percuma

Clothoff.io
Penyingkiran pakaian AI

AI Hentai Generator
Menjana ai hentai secara percuma.

Artikel Panas

Alat panas

mPDF
mPDF ialah perpustakaan PHP yang boleh menjana fail PDF daripada HTML yang dikodkan UTF-8. Pengarang asal, Ian Back, menulis mPDF untuk mengeluarkan fail PDF "dengan cepat" dari tapak webnya dan mengendalikan bahasa yang berbeza. Ia lebih perlahan dan menghasilkan fail yang lebih besar apabila menggunakan fon Unicode daripada skrip asal seperti HTML2FPDF, tetapi menyokong gaya CSS dsb. dan mempunyai banyak peningkatan. Menyokong hampir semua bahasa, termasuk RTL (Arab dan Ibrani) dan CJK (Cina, Jepun dan Korea). Menyokong elemen peringkat blok bersarang (seperti P, DIV),

SecLists
SecLists ialah rakan penguji keselamatan muktamad. Ia ialah koleksi pelbagai jenis senarai yang kerap digunakan semasa penilaian keselamatan, semuanya di satu tempat. SecLists membantu menjadikan ujian keselamatan lebih cekap dan produktif dengan menyediakan semua senarai yang mungkin diperlukan oleh penguji keselamatan dengan mudah. Jenis senarai termasuk nama pengguna, kata laluan, URL, muatan kabur, corak data sensitif, cangkerang web dan banyak lagi. Penguji hanya boleh menarik repositori ini ke mesin ujian baharu dan dia akan mempunyai akses kepada setiap jenis senarai yang dia perlukan.

Hantar Studio 13.0.1
Persekitaran pembangunan bersepadu PHP yang berkuasa

Pelayar Peperiksaan Selamat
Pelayar Peperiksaan Selamat ialah persekitaran pelayar selamat untuk mengambil peperiksaan dalam talian dengan selamat. Perisian ini menukar mana-mana komputer menjadi stesen kerja yang selamat. Ia mengawal akses kepada mana-mana utiliti dan menghalang pelajar daripada menggunakan sumber yang tidak dibenarkan.

PhpStorm versi Mac
Alat pembangunan bersepadu PHP profesional terkini (2018.2.1).