سؤال

ودعونا نقول لدي هذا الرمز:

<?php
class hello {
    var $greeting = "hello";
    function hello(){
        echo $this->greeting;
        return;
    }
}

$hello1 = new hello;
$hello2 = new hello;
$hello4 = new hello;
?>

وكيف أحصل عليه أن أردد كل أسماء الأشياء مثيل (وإذا أمكن الطبقة منهما)، بحيث صدى (ربما في مجموعة) "hello1 => مرحبا، hello2 => مرحبا، hello4 => مرحبا ".

إذا لم يكن ذلك ممكنا، هل هناك أي طريقة لمعرفة اسم مثيل من داخل الصف، شيء من هذا القبيل صدى INSTANCE_NAME ($ هذا)؛ سوف يحصل لي "hello1". شكرا.

هل كانت مفيدة؟

المحلول

هل يمكن تسمية get_defined_vars للحصول على مجموعة واسعة من كافة الكائنات الحاضر، ومن ثم استخدام get_class للحصول على أسماء فئة لكل واحد (رمز لم تختبر، ولكن ينبغي لها أن تعمل):

$vars = array();
foreach (get_defined_vars() as $var) {
    $vars[$var] = get_class($var);
}

ولمعلوماتك، ما تسمونه "الطبقة أعلن" من المعروف أكثر كذلك "الكائن".

والسؤال الثاني الخاص بك هو غير ممكن. خذ على سبيل المثال:

$hello1 = $hello2 = new hello();

والآن، إذا أدعو instance_name، يجب أن يعود "hello1 'أو' hello2؟

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top