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!