5 ciri baru dalam Php 7

5 ciri baru dalam Php 7

Pengarang Bio

Kajian Kes ini adalah jawatan tetamu yang ditulis oleh Kaira Clark Works di Xicom Technologies Ltd - sebuah syarikat pembangunan aplikasi web cakephp. Dia selalu gembira untuk berkongsi semangatnya untuk pemasaran dan pembangunan web. Sekiranya anda merancang untuk menyewa pasukan yang berdedikasi untuk kehadiran dalam talian yang cemerlang, dia adalah yang untuk anda.

5 ciri baru dalam Php 7

Semua perkara yang dipertimbangkan, 2015 telah menjadi tahun penting bagi setiap pereka PHP, dan mengikuti sebelas tahun, penyesuaian PHP hingga 5.0 pelepasan, terdapat perkembangan lain yang, dalam jangka masa panjang, yang akan datang. Walau bagaimanapun, pertimbangkan sorotan pembangunan yang berbeza, fikirkan kaedah varian PHP anda akan memberi kesan kepada PHP Codebase semasa anda? Cukup menilai apa yang benar -benar berubah dalam php? Betapa selamatnya anda berurusan dengan reka bentuk semula php? Di sini, dalam siaran ini, anda akan mendapat setiap penyelesaian untuk pertanyaan anda dan akan akhirnya pengalaman apa yang akan datang semasa anda bekerja dengan Php 7. Oleh itu, mari kita sampai ke hati mengenai perkara peperiksaan sekarang.

Penambahbaikan pelaksanaan

Peningkatan Pelaksanaan kemungkinan besar salah satu motivasi utama di kalangan pemaju tentang mengapa semua orang sepatutnya mempunyai laporan pada setiap pelayan apabila terdapat ketibaan varian stabil PHP dikeluarkan. Refactoring pusat yang dibentangkan oleh telefon RFC menjadikan Php 7 lebih cepat daripada HHVM. Penanda aras rasmi patut diberi perhatian: kebanyakan aplikasi biasa berjalan pada Php 5.6 akan terus melaksanakan dalam setiap acara dua kali lebih cepat pada Php 7.

Perangkap keserasian ke belakang

Sekarang, marilah kita mengadakan perbualan mengenai beberapa faktor PHP penting yang akhirnya dapat memecah aplikasi warisan yang berjalan pada versi PHP yang lebih lama.

  • Sintaks pembolehubah seragam

Menyelesaikan satu siri setiap ketidakkonsistenan pada masa menilai ekspresi berubah-ubah. Pertimbangkan kod di bawah yang ditunjukkan:

 syarikat kelas awam $ emp_name = 'madhur; awam $ emp_des = 'jurutera perisian';  $ company = syarikat baru (); $ property = ['first' => 'emp_name', 'kedua' => 'info']; echo "Nama NELPORTEE adalah" . $ syarikat-> $ harta ['pertama'] . "nn"; 

Dalam Php 7, ungkapan $ syarikat-> $ property ['pertama'] dinilai sebagai $ company-> $ property ['first']. Jurubahasa akan menilai $ syarikat-> $ harta pertama.

Terima kasih kepada sintaks pembolehubah kiri-ke-kanan kami yang menjadikan setiap ungkapan sah yang tidak mungkin dalam versi PHP awal. Pertimbangkan kelas berikut untuk pemahaman yang lebih baik:

 syarikat kelas public static $ location = 'ncr'; fungsi awam getBranches () return ['jaipur' => function () return "timur dan barat;, 'chandigarh' => function () return 'utara dan selatan';]; fungsi awam getBranchesof ($ seseorang) return $ this-> getBranches () [$ seseorang]; fungsi statik awam getNewCompany () return syarikat baru (); 

Php 7 memungkinkan untuk mewujudkan persatuan bersarang dengan kombinasi yang berbeza antara pengendali:

$ syarikat = syarikat baru (); echo "n" . $ syarikat-> getBranches () ['Jaipur'] () . "nn"; echo "n" . $ syarikat-> getBranchesof ('Chandigarh') () . "nn"; 

Coretan kod ini akan menghasilkan ralat parse pada Php 5, tetapi berjalan lancar dengan Php 7.

Bekerja dengan ralat maut dengan pelbagai klausa "lalai"

Ini, sekali lagi kes kontroversi yang berkaitan dengan kesilapan yang lebih logik. Ia tidak menggunakan pelbagai klausa lalai dalam suis hanya kerana tidak pernah berlaku sebarang amaran ralat. Dalam Php 7, anda akan menemui kesilapan yang membawa maut: "Pernyataan suis hanya mengandungi satu klausa lalai".

Pengecualian enjin di PHP

Pengecualian enjin berfungsi sebagai prosedur pengendalian ralat dalam aplikasi. Oleh itu, semua kesilapan maut anda yang maut dan boleh diperolehi semula dengan cekap digantikan dengan pengecualian, dengan mudah menangkap semua kesilapan tersebut dan mengambil tindakan terhadap mengendalikan kesilapan tersebut.

Mari kita rujuk kod di bawah tentang cara mengendalikan pelaksanaan pengecualian enjin untuk memastikan keserasian ke belakang mudah:

 set_error_handler (fungsi ($ kod, $ mesej) echo "ralat $ code:" . $ mesej . "nn"; ); fungsi a (arrayObject $ b) return $ b;  ujian"); echo "Hello World"; 

Kod ini berkesan pulih kesilapan yang disebabkan oleh jenis ketidakcocokan apabila anda memanggil fungsi a () dengan bantuan rentetan sebagai parameter.

Hai dunia

Pelaksanaan ini akan diteruskan kerana kesilapan ditangani dengan cekap. Dalam Php 7, ia akan menjana pengecualian TypeError yang bukan ralat. Jadi dalam kes ini, pengendali ralat tersuai tidak akan dipanggil, dan ini adalah output di bawah yang anda akan dapati:


Kesalahan maut: TypeError Uncaught: Argumen 1 Lulus kepada A () mestilah contoh ArrayObject, rentetan yang diberikan, dipanggil/vagrant/test/test04.PHP pada baris 12 dan ditakrifkan dalam/vagrant/test/test04.PHP: 7
Jejak Stack:
#0/vagrant/test/test04.PHP (12): A ('Ujian')
#1 Main
dilemparkan/vagrant/test/test04.PHP pada baris 7

Di sini pelaksanaan akan berhenti kerana pengecualian tidak ditangkap. Untuk mengatasi masalah ini, seseorang harus mencari pengecualian dengan menggunakan blok cuba/menangkap. Perhatikan bahawa hierarki pengecualian akan berubah untuk menampung pengecualian enjin baru dengan kod warisan yang minimum. Rujuk corak berikut di bawah:

  • Antara muka yang boleh dibuang
    • Pengecualian melaksanakan boleh dibuang
      • ErrorException memanjangkan pengecualian
      • RuntimeException memanjangkan pengecualian
    • Ralat melaksanakan boleh dibuang
      • TypeError memanjangkan ralat
      • ParseError memanjangkan ralat
      • AssertionError memanjangkan ralat

Corak di atas menandakan bahawa pengecualian tangkapan baru kini boleh dibuang dan bukannya pengecualian.

Ciri bahasa yang baru ditambah

Mari lihat apa yang termasuk?
Pengendali baru

1. -> Pengendali kapal angkasa/ perbandingan
Pengendali kapal angkasa dilambangkan sebagai, juga dikenali dengan nama pengendali perbandingan gabungan yang digunakan untuk membolehkan perbandingan rantaian.

Ia mempunyai ungkapan berikut:
$ A $ B

1. Ekspresi Menilai ke -1 Jika $ A lebih kecil daripada $ B
2. 0 jika $ A sama dengan $ b
3. 1 jika $ A lebih besar daripada $ b.

Secara keseluruhannya ia boleh digunakan sebagai ungkapan berikut:

($ a $ b) ? 1: 0)

2 -> Operator Coalesce Null dilambangkan sebagai ?? yang menyimpan cek sama ada nilai ditetapkan untuk menggunakannya.

Petunjuk jenis skalar

Petunjuk jenis skalar datang sebagai salah satu sifat yang paling terkenal yang termasuk dalam bahasa PHP yang menggunakan integer, terapung, rentetan, dan simbol boolean sebagai petunjuk jenis untuk berfungsi dengan fungsi dan kaedah. Petunjuk jenis skalar tidak terhad secara lalai yang menandakan bahawa apabila anda lulus nilai terapung ke integer, parameter, ia hanya akan menindasnya untuk menyalakan format tanpa sebarang amaran ralat.

Oleh itu, untuk mengatasi masalah ini, adalah penting untuk membolehkan mod ketat yang akan membuang kesilapan apabila mana -mana jenis skalar haram diluluskan sebagai hujah. Mari kita rujuk di bawah kod yang dihasilkan:

 fungsi double (int $ value) return 2 * $ value;  $ a = double ("5"); var_dump ($ a); 

Untuk memastikan bahawa bilangan bulat dibenarkan untuk diluluskan untuk menggandakan fungsi, kemudian aktifkan mod yang ketat dengan memasukkan arahan mengisytiharkan (strict_types = 1) corak sebagai baris pertama dalam skrip anda:

 mengisytiharkan (strict_types = 1); fungsi double (int $ value) return 2 * $ value;  $ a = double ("5"); var_dump ($ a); 

Kod ini akan menjana a Kesalahan maut: TypeError Uncaught: Argumen 1 Diluluskan kepada Double () Harus dari Integer Jenis, Rentetan Diberikan.

Petunjuk jenis kembali

Satu lagi ciri baru yang penting yang ditambah kepada PHP 7 adalah keupayaan yang melampau untuk membolehkan jenis pulangan kaedah serta fungsi; yang berkelakuan sebagai petunjuk jenis skalar. Awasi kod yang dihasilkan di bawah:

 fungsi a (): bool return 1;  var_dump (a ()); 

Coretan kod ini berjalan dengan cekap tanpa amaran, dan nilai yang dikembalikan ditukar menjadi format bool secara automatik. Dengan mengaktifkan mod yang ketat, ralat maut dihasilkan:

Kesalahan maut: TypeError yang tidak diketahui: Nilai pulangan a () mestilah jenis boolean, integer kembali

Kesalahan ini adalah jenis pengecualian yang ditangkap dan dikendalikan dengan menggunakan blok percubaan/tangkapan.

Kesimpulan

Saya harap anda akan menikmati bekerja dengan semua versi baru Php 7. Baca lebih lanjut