Lebih
Apa metode terbaik untuk menggabungkan dua objek PHP?
Kami memiliki dua PHP5 benda-benda dan ingin menggabungkan konten dari satu ke yang kedua. Tidak ada gagasan dari subclass antara mereka sehingga solusi yang dijelaskan dalam topik berikut tidak berlaku.
Bagaimana anda copy PHP objek ke objek yang berbeda jenis
//We have this:
$objectA->a;
$objectA->b;
$objectB->c;
$objectB->d;
//We want the easiest way to get:
$objectC->a;
$objectC->b;
$objectC->c;
$objectC->d;
Keterangan:
- Ini adalah objek, bukan kelas.
- Benda-benda yang mengandung cukup banyak bidang sehingga a foreach akan menjadi cukup lambat.
- Sejauh ini kami mempertimbangkan untuk mengubah benda A dan B ke dalam array kemudian menggabungkan mereka menggunakan array_merge() sebelum kembali berubah menjadi sebuah benda tapi kita bisa't mengatakan kami bangga jika ini.
214
13
Ini sebenarnya juga bekerja ketika benda memiliki metode. (diuji dengan PHP 5.3 dan 5.6)
Jika anda benda-benda yang hanya berisi bidang (tidak ada metode), ini bekerja:
Anda bisa membuat benda lain yang mengirimkan panggilan ke metode sihir yang mendasari objek. Berikut ini's bagaimana anda'd handle
__get
, tapi untuk mendapatkan itu bekerja sepenuhnya anda'd harus mengesampingkan semua yang relevan metode sihir. Anda'mungkin akan menemukan kesalahan sintaks karena saya baru saja masuk dari atas kepala saya.Good luck.
Saya memahami bahwa dengan menggunakan objek generik [stdClass()] dan casting mereka sebagai array menjawab pertanyaan, tapi saya pikir Compositor itu jawaban yang bagus. Namun saya merasa itu bisa menggunakan beberapa fitur tambahan dan mungkin berguna untuk orang lain.
Fitur:
Kode:
Penggunaan:
Contoh:
Solusi yang sangat sederhana mengingat anda memiliki objek A dan B:
Yang's semua. Anda sekarang memiliki objA dengan semua nilai-nilai dari objB.
solusi Untuk melestarikan,baik metode dan properti dari digabung onjects adalah untuk menciptakan sebuah combinator kelas yang dapat
sederhana menggunakan
Untuk menggabungkan sejumlah baku benda-benda
The
\ArrayObject
kelas memiliki kemungkinan untuk exchange saat ini array untuk memutuskan asli reference. Untuk melakukannya, ia datang dengan dua handy metode:exchangeArray()
dangetArrayCopy()
. Sisanya polos sederhanaarray_merge()
yang diberikan objek dengan `ArrayObject umum sifat-sifat:Penggunaan yang sangat mudah seperti ini:
Aku akan pergi dengan menghubungkan kedua objek ke properti dari objek pertama. Jika kedua objek merupakan hasil dari sebuah fungsi atau metode, menggunakan referensi. Ex:
Let's keep it simple!
Jika itu doesn't menjawab pertanyaan anda, itu pasti akan membantu ke arah jawaban. Kredit untuk kode di atas berlaku untuk diri saya sendiri :)
Berikut ini adalah fungsi yang akan meratakan sebuah object atau array. Gunakan ini hanya jika anda yakin anda kunci yang unik. Jika anda memiliki tombol dengan nama yang sama mereka akan ditimpa. Anda akan perlu untuk menempatkan ini dalam kelas dan ganti "Fungsi" dengan nama kelas anda. Menikmati...
Ini cuplikan kode akan secara rekursif mengkonversi data untuk satu jenis (array atau objek) tanpa nested loop foreach. Berharap itu membantu seseorang!
Setelah Obyek dalam format array dapat anda gunakan array_merge dan mengkonversi kembali ke Objek jika anda perlu untuk.
Cara prosedural
Semua kredit pergi ke: Jason Oakley