Properti kelas yang diketik telah ditambahkan dalam PHP 7. 4 dan memberikan peningkatan besar pada sistem tipe PHP. Perubahan ini sepenuhnya ikut serta dan tidak merusak versi sebelumnya Show Dalam posting ini kita akan melihat fitur secara mendalam, tapi pertama mari kita mulai dengan meringkas poin yang paling penting
Beginilah penampilan mereka saat beraksi _Jika Anda tidak yakin tentang manfaat tambahan dari tipe, saya sarankan Anda membaca posting ini terlebih dahulu Tidak diinisialisasiSebelum melihat hal-hal menyenangkan, ada aspek penting tentang properti yang diketik yang penting untuk dibicarakan terlebih dahulu Terlepas dari apa yang mungkin Anda pikirkan pada pandangan pertama, kode berikut ini valid
Meskipun nilai 3 bukan bilangan bulat setelah membuat objek 4, PHP hanya akan menampilkan kesalahan saat 3 diakses
Seperti yang dapat Anda baca dari pesan kesalahan, ada "status variabel" jenis baru. tidak diinisialisasi Jika _3 tidak memiliki tipe, nilainya hanya 7. Jenis dapat dibatalkan, jadi tidak mungkin untuk menentukan apakah properti nullable yang diketik telah ditetapkan, atau hanya dilupakan. Itu sebabnya "tidak diinisialisasi" ditambahkanAda empat hal penting yang perlu diingat tentang uninitialized
Terutama perhatikan bahwa kode berikut, di mana properti yang tidak diinisialisasi dan tidak dapat dibatalkan ditetapkan setelah membuat objek, valid
Sementara status yang tidak diinisialisasi hanya diperiksa saat membaca nilai properti, validasi tipe dilakukan saat menulisnya. Ini berarti Anda dapat yakin bahwa tidak ada tipe yang tidak valid yang akan berakhir sebagai nilai properti Apa yang baru di PHP 8. 2 Default dan konstruktorMari kita lihat lebih dekat bagaimana nilai yang diketik dapat diinisialisasi. Dalam kasus tipe skalar, dimungkinkan untuk memberikan nilai default
Perhatikan bahwa Anda hanya dapat menggunakan _7 sebagai default jika jenisnya benar-benar dapat dibatalkan. Ini mungkin tampak jelas, tetapi ada beberapa perilaku lama dengan default parameter yang mengizinkan hal berikut
Untungnya perilaku membingungkan ini tidak diperbolehkan dengan properti yang diketik Perhatikan juga bahwa tidak mungkin memiliki nilai default dengan 1 atau tipe kelas. Anda harus menggunakan konstruktor untuk menyetel defaultnyaTempat yang jelas untuk menginisialisasi nilai yang diketik tentu saja adalah konstruktor
Tapi juga ingat apa yang saya sebutkan sebelumnya. sah untuk menulis ke properti yang tidak diinisialisasi, di luar konstruktor. Selama tidak ada yang membaca dari properti, pemeriksaan yang tidak diinisialisasi tidak dilakukan Jenis jenisJadi apa sebenarnya yang bisa diketik dan bagaimana caranya? Berdasarkan jenis yang tersedia, hampir semua jenis dapat digunakan, kecuali 1 dan 2Karena _1 berarti tidak adanya nilai, masuk akal bahwa itu tidak dapat digunakan untuk mengetikkan nilai. 2 namun sedikit lebih bernuansaLihat, "callable" di PHP bisa ditulis seperti itu
Katakanlah Anda memiliki kode (rusak) berikut
Dalam contoh ini, _7 mengacu pada 8 pribadi, tetapi disebut dalam konteks 4. Karena masalah ini, diputuskan untuk tidak menambahkan dukungan 2Ini bukan masalah besar, karena _1 adalah tipe yang valid, yang akan mengingat konteks 2 di mana itu dibangunDengan itu, berikut adalah daftar semua jenis yang tersedia
Jenis pemaksaan dan ketatPHP, sebagai bahasa dinamis yang kita sukai dan benci, akan mencoba memaksa atau mengonversi tipe jika memungkinkan. Katakanlah Anda melewatkan string di mana Anda mengharapkan bilangan bulat, PHP akan mencoba dan mengonversi string itu secara otomatis
Prinsip yang sama berlaku untuk properti yang diketik. Kode berikut ini valid dan akan mengonversi 3 menjadi 4 0Jika Anda tidak menyukai perilaku ini, Anda dapat menonaktifkannya dengan mendeklarasikan tipe yang ketat _1Jenis varians dan pewarisanMeskipun PHP7. 4 diperkenalkan , properti yang diketik masih invarian. Ini berarti bahwa yang berikut ini tidak valid _2Jika contoh di atas tampaknya tidak signifikan, Anda harus melihat yang berikut ini _3PHP akan mengganti _5 di belakang layar dengan kelas konkret yang dirujuknya, sebelum menjalankan kode. Ini berarti bahwa kesalahan yang sama akan dilemparkan dalam contoh ini. Satu-satunya cara untuk mengatasinya, adalah dengan melakukan hal berikut _4Berbicara tentang pewarisan, Anda mungkin kesulitan menemukan kasus penggunaan yang baik untuk menimpa jenis properti yang diwariskan Meskipun saya setuju dengan sentimen itu, perlu dicatat bahwa adalah mungkin untuk mengubah jenis properti yang diwariskan, tetapi hanya jika pengubah akses juga berubah dari 9 menjadi 8 atau 7Kode berikut ini valid 5Namun, mengubah jenis dari nullable menjadi non-nullable atau sebaliknya, tidak diperbolehkan _6Melihat tpyo? . Jika Anda ingin tetap mendapatkan informasi terbaru tentang apa yang terjadi di blog ini, Anda dapat mengikuti saya di Twitter atau berlangganan buletin saya. Email Berlangganan Masih ada lagiSeperti yang dikatakan di awal posting ini, properti yang diketik adalah tambahan utama untuk PHP. Masih banyak lagi yang bisa dikatakan tentang mereka. Saya sarankan Anda membaca RFC untuk mengetahui semua detail kecil yang rapi Jika Anda baru menggunakan PHP 7. 4, Anda mungkin ingin membaca daftar lengkap perubahan yang dibuat dan fitur yang ditambahkan. Sejujurnya, ini adalah salah satu rilis terbaik dalam waktu yang lama, dan sepadan dengan waktu Anda Terakhir, jika Anda memiliki pemikiran yang ingin Anda bagikan tentang topik ini, saya ingin mendengar pendapat Anda. Anda dapat menghubungi saya melalui Twitter atau email Apa itu properti di PHP?Dalam php, properti sama dengan atribut, variabel sederhana tanpa fungsi . Mereka harus disebut atribut, bukan properti.
Apa properti dalam kode?Properti adalah anggota yang menyediakan mekanisme fleksibel untuk membaca, menulis, atau menghitung nilai bidang pribadi . Properti dapat digunakan seolah-olah mereka adalah anggota data publik, tetapi mereka adalah metode khusus yang disebut pengakses.
Apa itu metode dan properti di PHP?Kelas berisi variabel dan fungsi. variabel data ini disebut properti dan fungsi data disebut metode data .
Apa itu properti di kelas?Properti adalah atribut atau fitur yang mencirikan kelas . Sementara kelas adalah kelompok objek, sebuah instance adalah objek spesifik yang benar-benar dimiliki oleh sebuah kelas. |