إذا قمت بتمديد فصل ثابت في PHP ، ويشير فئة الوالدين إلى "Self ::" ، فهل يشير هذا إلى الذات في الفصل الممتد؟
سؤال
إذا قمت بتمديد فصل ثابت في 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 ، ويسمح لك بالتحكم في هذا السلوك.
لا تنتمي إلى StackOverflow