Rumah  >  Artikel  >  pembangunan bahagian belakang  >  PHP menukar data objek kepada tatasusunan

PHP menukar data objek kepada tatasusunan

WBOY
WBOYasal
2023-05-11 09:02:36457semak imbas

Apabila kami membangun menggunakan PHP, kami sering menghadapi situasi di mana kami perlu menukar data objek kepada tatasusunan. Dalam PHP, kita boleh menggunakan fungsi get_object_vars untuk menukar pembolehubah dalam objek kepada tatasusunan.

Pertama, mari kita lihat cara menggunakan fungsi get_object_vars. Fungsi ini menerima parameter objek dan mengembalikan tatasusunan bersekutu yang mengandungi semua pembolehubah ahli awam dalam objek, dengan kunci tatasusunan ialah nama pembolehubah ahli dan nilai tatasusunan ialah nilai pembolehubah ahli. Berikut ialah kod sampel menggunakan fungsi get_object_vars:

class Person {
    public $name;
    public $age;

    public function __construct($name, $age) {
        $this->name = $name;
        $this->age = $age;
    }
}

$person = new Person("John", 25);
$personArray = get_object_vars($person);

print_r($personArray);

Dalam kod sampel di atas, kami mula-mula mentakrifkan kelas Person dan memulakan pembolehubah name dan age dalam pembina . Seterusnya, kami mencipta objek Person $person dan menetapkannya kepada pembolehubah $personArray. Akhir sekali, kami mencetak kandungan tatasusunan print_r menggunakan fungsi $personArray.

Jalankan kod di atas, kita akan mendapat output berikut:

Array
(
    [name] => John
    [age] => 25
)

Seperti yang dinyatakan di atas, fungsi get_object_vars hanya mengembalikan pembolehubah ahli awam, jadi tidak ada cara untuk mendapatkan ahli persendirian pembolehubah dalam objek. Jika kita perlu mendapatkan semua pembolehubah ahli dalam objek, kita boleh menggunakan kaedah getProperties dalam mekanisme refleksi PHP.

Berikut ialah contoh kod yang menggunakan kaedah ReflectionClass dalam kelas getProperties untuk menukar pembolehubah ahli persendirian objek kepada tatasusunan:

class Person {
    private $name;
    private $age;

    public function __construct($name, $age) {
        $this->name = $name;
        $this->age = $age;
    }

    private function introduce() {
        echo "My name is " . $this->name . " and my age is " . $this->age . ".";
    }
}

$person = new Person("John", 25);

$reflectedPerson = new ReflectionClass(get_class($person));
$properties = $reflectedPerson->getProperties(ReflectionProperty::IS_PRIVATE);

$personArray = [];

foreach ($properties as $property) {
    $property->setAccessible(true);
    $personArray[$property->getName()] = $property->getValue($person);
}

print_r($personArray);

Dalam kod sampel di atas , kami mentakrifkan kelas bernama Person dan memulakan pembolehubah persendirian $name dan $age dalam pembina. Seterusnya, kami mencipta objek Person $person.

Kami menggunakan kelas ReflectionClass untuk mendapatkan nama kelas $person dan mencipta contoh kelas refleksi $reflectedPerson melalui nama kelas. Kami menggunakan kaedah getProperties untuk mendapatkan semua pembolehubah ahli persendirian dalam kelas $person dan menyimpan pembolehubah ini dalam pembolehubah $properties.

Dalam gelung, kami mula-mula menjadikan pembolehubah ahli persendirian boleh diakses menggunakan kaedah setAccessible. Seterusnya, kami menggunakan kaedah getName untuk mendapatkan nama pembolehubah dan kaedah getValue untuk mendapatkan nilai pembolehubah tersebut. Akhir sekali, kami menyimpan nama pembolehubah dan nilai pembolehubah dalam tatasusunan $personArray.

Menjalankan kod di atas, kita akan mendapat output berikut:

Array
(
    [name] => John
    [age] => 25
)

Dalam banyak kes, menukar data objek kepada tatasusunan adalah perlu. Kita boleh melakukannya dengan mudah menggunakan fungsi get_object_vars terbina dalam PHP dan kaedah getProperties dalam mekanisme pantulan.

Atas ialah kandungan terperinci PHP menukar data objek kepada tatasusunan. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
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