إذا قمت بتمديد فصل ثابت في PHP ، ويشير فئة الوالدين إلى "Self ::" ، فهل يشير هذا إلى الذات في الفصل الممتد؟

StackOverflow https://stackoverflow.com/questions/3723217

  •  03-10-2019
  •  | 
  •  

سؤال

إذا قمت بتمديد فصل ثابت في PHP ، ويشير فئة الوالدين إلى "Self ::" ، هل سيشير هذا إلى الذات في الفصل الممتد؟

لذلك ، على سبيل المثال

<?php 
Class A
{
    static $var  
    public static function guess(){self::$var = rand(); return $var}
}        

Class B extends Class A
{
    public static function getVar(){return self::$var}
}

إذا ركضت ب :: تخمين () ؛ ثم ب :: getvar () ؛

هل قيمة VAR مخزنة في :: $ var أو b :: $ var؟

شكرًا لك.

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

المحلول

من السهل الاختبار:

class ClassA {
    public static function test(){ self::getVar(); }
    public static function getVar(){ echo 'A'; }
}        

class ClassB extends ClassA {
    public static function getVar(){ echo 'B'; }
}

ClassA::test(); // prints 'A'

ClassB::test(); // also prints 'A'

... امل ان يساعد :)

نصائح أخرى

الربط الثابت المتأخر تم تقديمه في PHP 5.3 ، ويسمح لك بالتحكم في هذا السلوك.

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