Mari bercakap tentang pengetahuan yang berkaitan dengan penukaran jenis dikembangkan PHP7+

PHPz
Lepaskan: 2023-04-21 11:09:08
asal
634 orang telah melayarinya

Dengan pembangunan bahasa PHP, PHP7 telah bertambah baik dalam prestasi dan keselamatan. Antaranya, fungsi penukaran jenis diperluaskan adalah fungsi yang sangat praktikal, yang boleh menjadikan kod lebih ringkas dan cekap. Artikel ini akan memperkenalkan pengetahuan yang berkaitan tentang penukaran jenis dikembangkan PHP7+.

1. Gambaran Keseluruhan

Penukaran jenis lanjutan merujuk kepada menukar satu jenis data kepada jenis data yang lain. Sebelum PHP7, kami biasanya menggunakan satu siri fungsi untuk menukar jenis data, seperti intval(), floatval(), strval(), boolval(), dsb. Namun, masih terdapat beberapa masalah dengan fungsi ini:

  1. Nama fungsi tidak mudah diingati
  2. fungsi kadangkala menyebabkan masalah kebolehbacaan dan kebolehbacaan; panggilan kadangkala menyebabkan ralat pelik.
  3. Untuk menyelesaikan masalah ini, PHP7 memperkenalkan fungsi penukaran jenis lanjutan, yang boleh melakukan penukaran jenis melalui gula sintaksis baharu.

2. Penggunaan asas

Dalam PHP7, kita boleh menggunakan gula sintaksis berikut untuk penukaran jenis:

(int) $var: Tukar $var kepada Integer taip;
  1. (float) $var: Tukar $var kepada jenis titik terapung
  2. (rentetan) $var: Tukar $var kepada jenis rentetan >(bool) $var: Tukar $var kepada nilai Boolean.
  3. Berikut ialah beberapa contoh penggunaan gula sintaktik untuk penukaran jenis:
Sebagai bahasa dinamik, jenis data PHP ditentukan pada masa jalan, jadi sambungan ini Sintaks penukaran jenis gula boleh menjadi sangat berguna dalam keadaan yang betul. Bahagian ini menyediakan beberapa contoh mudah untuk menggambarkan perkara ini.

3. Kajian mendalam
<?php
    $a = "123";
    $b = (int) $a;
    echo gettype($b); // 输出:integer
    
    $c = 3.14;
    $d = (string) $c;
    echo gettype($d); // 输出:string
    
    $e = "true";
    $f = (bool) $e;
    echo gettype($f); // 输出:boolean
?>
Salin selepas log masuk

Dalam PHP7, fungsi penukaran jenis dikembangkan bukan sahaja boleh menukar jenis data asas, tetapi juga menukar beberapa jenis data khas.

Penukaran tatasusunan

    Apabila kita perlu menukar tatasusunan kepada rentetan, menggunakan fungsi implode() masih merupakan pilihan yang baik. Tetapi ia juga boleh dicapai menggunakan fungsi penukaran jenis lanjutan:
Hasil output:

<?php
    $arr = array("hello", "world");
    $str1 = implode(&#39;,&#39;, $arr);
    $str2 = (string) $arr;
    echo $str1."n".$str2;
?>
Salin selepas log masuk
Apabila menggunakan gula sintaks penukaran jenis lanjutan untuk menukar tatasusunan kepada rentetan, hasil keluaran ialah Array Ini bukan yang kita mahu. Penyelesaian kepada masalah ini ialah menggunakan fungsi __toString(), yang menukar tatasusunan menjadi objek.

hello,world
Array
Salin selepas log masuk
Hasil keluaran:

<?php
    class A {
        private $arr = array("hello", "world");
        public function __toString() {
            return implode(&#39;,&#39;, $this->arr);
        }
    }
    $a = new A();
    echo (string) $a;
?>
Salin selepas log masuk

Penukaran objek

hello,world
Salin selepas log masuk
    Selain tatasusunan, kita juga boleh menukar objek kepada objek dengan menggunakan lanjutan jenis penukaran sintaks gula Tukar kepada jenis data yang berbeza. Berikut ialah beberapa contoh:
Pertama sekali, jika kita melihat contoh di atas, kita akan mendapati terdapat empat kaedah yang ditakrifkan dalam kelas Ujian: __toString(), __toInt(), __toFloat (), dan __toArray() . Kaedah ini adalah teras untuk melanjutkan fungsi penukaran jenis, jadi kita mesti menentukannya untuk melaksanakan kaedah penukaran jenis data baharu.

Dalam kod di atas, apabila kita menukar objek Ujian kepada jenis rentetan, kaedah __toString() akan dipanggil secara automatik dan rentetan yang sepadan akan dikembalikan. Begitu juga, apabila objek ditukar kepada integer atau jenis titik terapung, kaedah __toInt() atau __toFloat() dipanggil secara automatik untuk penukaran. Apabila objek ditukar kepada jenis tatasusunan, kaedah __toArray() dipanggil secara automatik.
<?php
    class Test {
        private $var = "hello,world";
        public function __toString() {
            return $this->var;
        }
        public function __toInt() {
            return (int) $this->var;
        }
        public function __toFloat() {
            return (float) $this->var;
        }
        public function __toArray() {
            return array($this->var);
        }
    }
    $t = new Test();
    echo (string) $t; // 输出:hello,world
    echo (int) $t; // 输出:0
    echo (float) $t; // 输出:0
    print_r((array) $t); // 输出:Array ( [0] => hello,world )
?>
Salin selepas log masuk

Apabila menggunakan penukaran jenis lanjutan, beri perhatian khusus kepada susunan penukaran jenis. Sebagai contoh, jika kita memanggil (int) $t, tetapi $t tidak mentakrifkan kaedah __toInt(), kaedah __toString() dipanggil secara automatik. Dan jika kaedah __toString() tidak ditakrifkan, 0 akan dikembalikan.

4. Ringkasan

Penukaran jenis lanjutan ialah ciri baharu PHP7 yang sangat praktikal, yang boleh menjadikan kod lebih ringkas dan cekap. Apabila menggunakan penukaran jenis lanjutan, anda perlu memberi perhatian kepada jujukan penukaran jenis dan pelaksanaan kaedah penukaran jenis. Di samping itu, penukaran jenis lanjutan juga boleh diperluaskan kepada jenis data yang ditentukan sendiri, membawa lebih banyak kemudahan kepada pembangunan kod kami.

Atas ialah kandungan terperinci Mari bercakap tentang pengetahuan yang berkaitan dengan penukaran jenis dikembangkan PHP7+. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

sumber:php.cn
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
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan
Tentang kita Penafian Sitemap
Laman web PHP Cina:Latihan PHP dalam talian kebajikan awam,Bantu pelajar PHP berkembang dengan cepat!