Rumah > pembangunan bahagian belakang > masalah PHP > Tukar objek php kepada tatasusunan

Tukar objek php kepada tatasusunan

王林
Lepaskan: 2023-05-11 09:30:07
asal
754 orang telah melayarinya

PHP menyediakan banyak ciri dan sambungan bahasa yang berkuasa, antaranya pengaturcaraan berorientasikan objek ialah paradigma pengaturcaraan yang digunakan secara meluas. Dalam PHP, objek ialah jenis data kompleks yang mengandungi pelbagai sifat dan kaedah. Dalam pembangunan, kita sering perlu menukar objek kepada tatasusunan untuk kegunaan mudah dalam senario yang berbeza. Artikel ini akan meneroka cara menukar objek PHP kepada tatasusunan.

1. Kaedah menukar objek kepada tatasusunan

Dalam PHP, terdapat banyak cara untuk menukar objek kepada tatasusunan. Berikut ialah tiga kaedah:

  1. Gunakan penukaran jenis

Kaedah ini merupakan salah satu kaedah yang paling mudah dan paling biasa digunakan. Dalam PHP, objek boleh dihantar menggunakan operator (tatasusunan) Semasa proses penukaran, sifat dalaman objek akan ditambahkan pada tatasusunan. Contohnya:

class Person {
    public $name = 'John';
    public $age = 25;
}

$person = new Person();
$array = (array) $person;
Salin selepas log masuk

Dalam kod di atas, kelas bernama Person dijadikan instantiated menjadi objek $person. Kemudian hantar objek $person ke array $array, yang mengandungi semua sifat dan nilai yang sepadan dengan objek $person.

  1. Gunakan fungsi get_object_vars

Fungsi get_object_vars boleh menukar sifat objek kepada tatasusunan bersekutu Kunci tatasusunan ialah nama sifat dan nilainya nilai harta yang sepadan. Contohnya:

class Person {
    public $name = 'John';
    public $age = 25;
}

$person = new Person();
$array = get_object_vars($person);
Salin selepas log masuk

Dalam kod di atas, kelas bernama Person dijadikan instantiated menjadi objek $person. Kemudian panggil fungsi get_object_vars untuk menukar sifat objek $person kepada tatasusunan bersekutu $array.

Perlu diambil perhatian bahawa fungsi get_object_vars hanya boleh mendapatkan atribut awam objek, tetapi fungsi ini tidak boleh mendapatkan atribut peribadi dan atribut yang dilindungi.

  1. Gunakan json_encode dan json_decode

Kaedah ini lebih bijak dan boleh menukar objek kepada tatasusunan berdasarkan pengekodan dan penyahkodan format JSON. Langkah pelaksanaan khusus adalah seperti berikut:

  1. Gunakan fungsi json_encode untuk menukar objek kepada rentetan JSON
  2. Gunakan fungsi json_decode untuk menukar rentetan JSON kepada tatasusunan; 🎜>
  3. Tukar Tatasusunan yang terhasil dikembalikan.
Contohnya:

class Person {
    public $name = 'John';
    public $age = 25;
}

$person = new Person();
$json = json_encode($person);
$array = json_decode($json, true);
Salin selepas log masuk

Dalam kod di atas, kelas bernama Person dijadikan instantiated menjadi objek $person. Kemudian gunakan fungsi json_encode untuk menukar objek $person kepada rentetan JSON $json, dan kemudian gunakan fungsi json_decode untuk menukar rentetan JSON $json kepada tatasusunan $array.

2. Langkah berjaga-jaga untuk menukar objek kepada tatasusunan

Semasa proses menukar objek kepada tatasusunan, anda perlu memberi perhatian kepada beberapa perkara untuk mengelakkan ralat yang tidak dijangka.

    Penamaan nama atribut
Apabila menukar objek kepada tatasusunan, penamaan nama atribut mesti mengikut konvensyen penamaan PHP. Nama atribut tidak boleh bermula dengan nombor, ia mesti bermula dengan huruf atau garis bawah, dan boleh diikuti dengan mana-mana gabungan huruf, nombor dan garis bawah. Selain itu, nama atribut perlu mematuhi peraturan penamaan pembolehubah PHP dan tidak boleh menggunakan kata kunci simpanan.

    Jangan mengandungi objek dalam tatasusunan
Apabila menukar objek kepada tatasusunan, anda harus memastikan bahawa tatasusunan tidak mengandungi objek, jika tidak, ia akan mudah berlaku semasa siri dan soalan deserialisasi. Jika tatasusunan mengandungi objek, adalah disyorkan untuk menukar objek kepada tatasusunan secara berasingan.

    Untuk hartanah persendirian dan harta yang dilindungi, pemprosesan tambahan diperlukan
Apabila menggunakan fungsi get_object_vars untuk menukar objek kepada tatasusunan, sila ambil perhatian bahawa harta persendirian dan harta yang dilindungi tidak dapat Dapatkan, jika anda perlu mendapatkan sifat peribadi dan sifat yang dilindungi, anda boleh menggunakan refleksi untuk mendapatkan sifat objek secara dinamik. Contohnya:

class Person {
    private $name = 'John';
    protected $age = 25;
}

$person = new Person();
$ref = new ReflectionObject($person);
$props = $ref->getProperties(ReflectionProperty::IS_PUBLIC | ReflectionProperty::IS_PROTECTED | ReflectionProperty::IS_PRIVATE);
$array = array();
foreach ($props as $prop) {
    $prop->setAccessible(true);
    $array[$prop->getName()] = $prop->getValue($person);
}

print_r($array);
Salin selepas log masuk
Dalam kod di atas, kelas bernama Person ditakrifkan, yang mengandungi atribut peribadi $name dan atribut yang dilindungi $age. Kemudian gunakan refleksi untuk mendapatkan sifat objek secara dinamik dan tetapkan tahap capaian sifat kepada boleh diakses. Akhir sekali, nama atribut dan nilai atribut yang sepadan disimpan ke dalam array $array.

3. Ringkasan

Dalam PHP, keperluan untuk menukar objek kepada tatasusunan adalah sangat biasa. Artikel ini menerangkan tiga kaedah biasa, termasuk menghantar, menggunakan fungsi get_object_vars dan menggunakan fungsi json_encode dan json_decode. Apabila menukar objek kepada tatasusunan, perhatian khusus perlu diberikan kepada penamaan nama atribut, sama ada tatasusunan mengandungi objek, dan pengendalian atribut peribadi dan atribut yang dilindungi. Hanya dengan memahami pertimbangan ini anda boleh menggunakan objek dan tatasusunan dengan lebih lancar.

Atas ialah kandungan terperinci Tukar objek php kepada tatasusunan. 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