Rumah pembangunan bahagian belakang tutorial php PHP : Ciri dan Penambahbaikan Teratas

PHP : Ciri dan Penambahbaikan Teratas

Jan 04, 2025 pm 07:44 PM

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
Salin selepas log masuk
Salin selepas log masuk
Salin selepas log masuk

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.

PHP : Top Features and Improvements

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
Salin selepas log masuk
Salin selepas log masuk
Salin selepas log masuk

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) { }
}
Salin selepas log masuk
Salin selepas log masuk

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;
    }
  }
}
Salin selepas log masuk
Salin selepas log masuk

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 < 2000){
        throw new ValueError("We only accept cars produced in year 2000 and above");
      }
      $this->year= $value;
    }
  }
}
Salin selepas log masuk
Salin selepas log masuk

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;
    }
  }
Salin selepas log masuk

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();
Salin selepas log masuk

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
Salin selepas log masuk
Salin selepas log masuk
Salin selepas log masuk

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) { }
}
Salin selepas log masuk
Salin selepas log masuk

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;
    }
  }
}
Salin selepas log masuk
Salin selepas log masuk

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 < 2000){
        throw new ValueError("We only accept cars produced in year 2000 and above");
      }
      $this->year= $value;
    }
  }
}
Salin selepas log masuk
Salin selepas log masuk

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!

Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn

Alat AI Hot

Undresser.AI Undress

Undresser.AI Undress

Apl berkuasa AI untuk mencipta foto bogel yang realistik

AI Clothes Remover

AI Clothes Remover

Alat AI dalam talian untuk mengeluarkan pakaian daripada foto.

Undress AI Tool

Undress AI Tool

Gambar buka pakaian secara percuma

Clothoff.io

Clothoff.io

Penyingkiran pakaian AI

Video Face Swap

Video Face Swap

Tukar muka dalam mana-mana video dengan mudah menggunakan alat tukar muka AI percuma kami!

Alat panas

Notepad++7.3.1

Notepad++7.3.1

Editor kod yang mudah digunakan dan percuma

SublimeText3 versi Cina

SublimeText3 versi Cina

Versi Cina, sangat mudah digunakan

Hantar Studio 13.0.1

Hantar Studio 13.0.1

Persekitaran pembangunan bersepadu PHP yang berkuasa

Dreamweaver CS6

Dreamweaver CS6

Alat pembangunan web visual

SublimeText3 versi Mac

SublimeText3 versi Mac

Perisian penyuntingan kod peringkat Tuhan (SublimeText3)

Jelaskan JSON Web Tokens (JWT) dan kes penggunaannya dalam PHP API. Jelaskan JSON Web Tokens (JWT) dan kes penggunaannya dalam PHP API. Apr 05, 2025 am 12:04 AM

JWT adalah standard terbuka berdasarkan JSON, yang digunakan untuk menghantar maklumat secara selamat antara pihak, terutamanya untuk pengesahan identiti dan pertukaran maklumat. 1. JWT terdiri daripada tiga bahagian: header, muatan dan tandatangan. 2. Prinsip kerja JWT termasuk tiga langkah: menjana JWT, mengesahkan JWT dan muatan parsing. 3. Apabila menggunakan JWT untuk pengesahan di PHP, JWT boleh dijana dan disahkan, dan peranan pengguna dan maklumat kebenaran boleh dimasukkan dalam penggunaan lanjutan. 4. Kesilapan umum termasuk kegagalan pengesahan tandatangan, tamat tempoh, dan muatan besar. Kemahiran penyahpepijatan termasuk menggunakan alat debugging dan pembalakan. 5. Pengoptimuman prestasi dan amalan terbaik termasuk menggunakan algoritma tandatangan yang sesuai, menetapkan tempoh kesahihan dengan munasabah,

Apakah penghitungan (enums) dalam Php 8.1? Apakah penghitungan (enums) dalam Php 8.1? Apr 03, 2025 am 12:05 AM

Fungsi penghitungan dalam Php8.1 meningkatkan kejelasan dan jenis keselamatan kod dengan menentukan pemalar yang dinamakan. 1) Penghitungan boleh menjadi bilangan bulat, rentetan atau objek, meningkatkan kebolehbacaan kod dan keselamatan jenis. 2) Penghitungan adalah berdasarkan kelas dan menyokong ciri-ciri berorientasikan objek seperti traversal dan refleksi. 3) Penghitungan boleh digunakan untuk perbandingan dan tugasan untuk memastikan keselamatan jenis. 4) Penghitungan menyokong penambahan kaedah untuk melaksanakan logik kompleks. 5) Pemeriksaan jenis dan pengendalian ralat yang ketat boleh mengelakkan kesilapan biasa. 6) Penghitungan mengurangkan nilai sihir dan meningkatkan keupayaan, tetapi memberi perhatian kepada pengoptimuman prestasi.

Bagaimanakah sesi merampas kerja dan bagaimana anda dapat mengurangkannya dalam PHP? Bagaimanakah sesi merampas kerja dan bagaimana anda dapat mengurangkannya dalam PHP? Apr 06, 2025 am 12:02 AM

Sesi rampasan boleh dicapai melalui langkah -langkah berikut: 1. Dapatkan ID Sesi, 2. Gunakan ID Sesi, 3. Simpan sesi aktif. Kaedah untuk mengelakkan rampasan sesi dalam PHP termasuk: 1. Gunakan fungsi Sesi_Regenerate_ID () untuk menjana semula ID Sesi, 2. Data sesi stor melalui pangkalan data, 3.

Huraikan prinsip -prinsip yang kukuh dan bagaimana ia memohon kepada pembangunan PHP. Huraikan prinsip -prinsip yang kukuh dan bagaimana ia memohon kepada pembangunan PHP. Apr 03, 2025 am 12:04 AM

Penerapan prinsip pepejal dalam pembangunan PHP termasuk: 1. Prinsip Tanggungjawab Tunggal (SRP): Setiap kelas bertanggungjawab untuk hanya satu fungsi. 2. Prinsip Terbuka dan Tutup (OCP): Perubahan dicapai melalui lanjutan dan bukannya pengubahsuaian. 3. Prinsip Penggantian Lisch (LSP): Subkelas boleh menggantikan kelas asas tanpa menjejaskan ketepatan program. 4. Prinsip Pengasingan Antara Muka (ISP): Gunakan antara muka halus untuk mengelakkan kebergantungan dan kaedah yang tidak digunakan. 5. Prinsip Inversi Ketergantungan (DIP): Modul peringkat tinggi dan rendah bergantung kepada abstraksi dan dilaksanakan melalui suntikan ketergantungan.

Terangkan pengikatan statik lewat dalam php (statik: :). Terangkan pengikatan statik lewat dalam php (statik: :). Apr 03, 2025 am 12:04 AM

Mengikat statik (statik: :) Melaksanakan pengikatan statik lewat (LSB) dalam PHP, yang membolehkan kelas panggilan dirujuk dalam konteks statik dan bukannya menentukan kelas. 1) Proses parsing dilakukan pada masa runtime, 2) Cari kelas panggilan dalam hubungan warisan, 3) ia boleh membawa overhead prestasi.

Apakah Prinsip Reka Bentuk API REST? Apakah Prinsip Reka Bentuk API REST? Apr 04, 2025 am 12:01 AM

Prinsip reka bentuk Restapi termasuk definisi sumber, reka bentuk URI, penggunaan kaedah HTTP, penggunaan kod status, kawalan versi, dan benci. 1. Sumber harus diwakili oleh kata nama dan dikekalkan pada hierarki. 2. Kaedah HTTP harus mematuhi semantik mereka, seperti GET digunakan untuk mendapatkan sumber. 3. Kod status hendaklah digunakan dengan betul, seperti 404 bermakna sumber tidak wujud. 4. Kawalan versi boleh dilaksanakan melalui URI atau header. 5. Boots Operasi Pelanggan Hateoas melalui pautan sebagai tindak balas.

Bagaimanakah anda mengendalikan pengecualian dengan berkesan dalam PHP (cuba, menangkap, akhirnya, membuang)? Bagaimanakah anda mengendalikan pengecualian dengan berkesan dalam PHP (cuba, menangkap, akhirnya, membuang)? Apr 05, 2025 am 12:03 AM

Dalam PHP, pengendalian pengecualian dicapai melalui percubaan, menangkap, akhirnya, dan membuang kata kunci. 1) blok percubaan mengelilingi kod yang boleh membuang pengecualian; 2) Blok tangkapan mengendalikan pengecualian; 3) Akhirnya Blok memastikan bahawa kod itu sentiasa dilaksanakan; 4) Lemparan digunakan untuk membuang pengecualian secara manual. Mekanisme ini membantu meningkatkan keteguhan dan mengekalkan kod anda.

Apakah kelas tanpa nama di PHP dan kapan anda boleh menggunakannya? Apakah kelas tanpa nama di PHP dan kapan anda boleh menggunakannya? Apr 04, 2025 am 12:02 AM

Fungsi utama kelas tanpa nama dalam PHP adalah untuk membuat objek satu kali. 1. Kelas tanpa nama membenarkan kelas tanpa nama ditakrifkan secara langsung dalam kod, yang sesuai untuk keperluan sementara. 2. Mereka boleh mewarisi kelas atau melaksanakan antara muka untuk meningkatkan fleksibiliti. 3. Beri perhatian kepada prestasi dan kebolehbacaan kod apabila menggunakannya, dan elakkan berulang kali menentukan kelas tanpa nama yang sama.

See all articles