Ответ 1
Нет. Это неправда. Статические методы и свойства будут получать унаследованные так же, как и нестатические методы и свойства, и подчиняться тем же правила видимости:
class A {
static private $a = 1;
static protected $b = 2;
static public $c = 3;
public static function getA()
{
return self::$a;
}
}
class B extends A {
public static function getB()
{
return self::$b;
}
}
echo B::getA(); // 1 - called inherited method getA from class A
echo B::getB(); // 2 - accessed inherited property $b from class A
echo A::$c++; // 3 - incremented public property C in class A
echo B::$c++; // 4 - because it was incremented previously in A
echo A::$c; // 5 - because it was incremented previously in B
Эти последние два являются заметной разницей. Приращение унаследованного статического свойства в базовом классе также увеличит его во всех дочерних классах и наоборот.