Emad Saif نشر 4 يونيو 2022 أرسل تقرير نشر 4 يونيو 2022 لدي صنفين MyClassA وMyClassB وأقوم بعمل كائن جديد من كلٍ منهما، على النحو التالي: <?php class MyClassA { public $a = "a"; public $b = "b"; } class MyClassB { public $c = "c"; public $d = "d"; } $obj1 = new MyClassA(); $obj2 = new MyClassB(); echo $obj1->a; echo $obj1->b; echo $obj2->c; echo $obj2->d; هل توجد طريقة لدمج الكائن obj1 وobj2 معًا في كائن واحد جديد وليكن باسم newObj؟ بحيث يمكن إستخدامه كما يلي: <?php echo $newObj->a; echo $newObj->b; echo $newObj->c; echo $newObj->d; كيف أقوم بدمج الكائنين معًا في PHP؟ 2 اقتباس
1 Hassan Hedr نشر 4 يونيو 2022 أرسل تقرير نشر 4 يونيو 2022 يمكن باستخدام تحويل النوع الصريح لتحويل كلا الكائنين إلى مصفوفة ترابطية associative عبر النوع array كالتالي: <?php (array) $obj1; // ["a" => "a", "b" => "b"] (array) $obj2; // ["c" => "c", "d" => "d"] ثم نستفيد من التابع array_merge لدمج المصفوفتين الناتجتين في مصفوفة واحدة كالتالي: <?php array_merge((array) $objectA, (array) $objectB); // ["a" => "a", "b" => "b", "c" => "c", "d" => "d"] ثم يمكن تحول المصفوفة الناتجة إلى كائن مجددًا عبر النوع object كالتالي: <?php $newObj = (object) array_merge((array) $objectA, (array) $objectB); echo $newObj->a; // a echo $newObj->b; // b echo $newObj->c; // c echo $newObj->d; // d لكن هذا النوع من الدمج محدود ويقوم بدمج الخصائص العامة فقط ولا يدمج التوابع 1 اقتباس
0 Wael Aljamal نشر 4 يونيو 2022 أرسل تقرير نشر 4 يونيو 2022 يمكننا إضافة الخواص للكائنات بشكل ديناميكي، مثل المرور على أول غرض، وإسناد كل من المفتاح و القيمة للغرض الآخر، و بالتالي عملية بناء الغرض الجديد بنفس القيم. <?php // كائن أول $x = new stdClass(); // كائن ثاني $y = new stdClass(); // استنساخ أول كائن لكتئن جديد $z = clone $x; // المرور على الكائن الثاني و قراءة الثنائيات و إسنادها ل الكائن الجديد foreach($y as $k => $v) {$z->$k = $v;} كما يمكننا عمل كائن جديد فيه خاصيتين كل منها عبارة عن كائنات مراد دمجها، وبتخصيص دالة get__ يمكننا إعادة الخاصية من الكائن الجديد من إحدى خاصيتيه <?php // تعريف صنف جديد class Compositor { // كل خاصية عبارة عن كائن مراد دمجه private $obj_a; private $obj_b; // الدالة البانية تسند غرضين لخواص الكائن public function __construct($obj_a, $obj_b) { $this->obj_a = $obj_a; $this->obj_b = $obj_b; } // من خلال الدالة السحرية public function __get($attrib_name) { // في حال كلنت الخاصية من أول كائن نعيدها if ($this->obj_a->$attrib_name) { return $this->obj_a->$attrib_name; } // وإلا ستكون في الثاني else { return $this->obj_b->$attrib_name; } } } 1 اقتباس
السؤال
Emad Saif
لدي صنفين MyClassA وMyClassB وأقوم بعمل كائن جديد من كلٍ منهما، على النحو التالي:
هل توجد طريقة لدمج الكائن obj1 وobj2 معًا في كائن واحد جديد وليكن باسم newObj؟ بحيث يمكن إستخدامه كما يلي:
كيف أقوم بدمج الكائنين معًا في PHP؟
2 أجوبة على هذا السؤال
Recommended Posts
انضم إلى النقاش
يمكنك أن تنشر الآن وتسجل لاحقًا. إذا كان لديك حساب، فسجل الدخول الآن لتنشر باسم حسابك.