lz看一下这个<?php class MyClass { const CONST_VALUE = 'A constant value'; }$classname = 'MyClass'; echo $classname::CONST_VALUE; // As of PHP 5.3.0echo MyClass::CONST_VALUE; ?> <?php class OtherClass extends MyClass { public static $my_static = 'static var'; public static function doubleColon() { echo parent::CONST_VALUE . "\n"; echo self::$my_static . "\n"; } }$classname = 'OtherClass'; echo $classname::doubleColon(); // As of PHP 5.3.0OtherClass::doubleColon(); ?> <?php class MyClass { protected function myFunc() { echo "MyClass::myFunc()\n"; } }class OtherClass extends MyClass { // Override parent's definition public function myFunc() { // But still call the parent function parent::myFunc(); echo "OtherClass::myFunc()\n"; } }$class = new OtherClass(); $class->myFunc(); ?> <?php class A { public function TestFunc() { return $this->test; } } class B { public $test; public function __construct() { $this->test = "Nice trick"; } public function GetTest() { return A::TestFunc(); } } $b = new B; echo $b->GetTest(); ?>
如果是 ::ns::n 的格式 代表自5.3加入的namespaces
调用父类或自己的静态成员。
例如:
super::xxxxx()
self::xxxxx()
class MyClass {
const CONST_VALUE = 'A constant value';
}$classname = 'MyClass';
echo $classname::CONST_VALUE; // As of PHP 5.3.0echo MyClass::CONST_VALUE;
?>
<?php
class OtherClass extends MyClass
{
public static $my_static = 'static var'; public static function doubleColon() {
echo parent::CONST_VALUE . "\n";
echo self::$my_static . "\n";
}
}$classname = 'OtherClass';
echo $classname::doubleColon(); // As of PHP 5.3.0OtherClass::doubleColon();
?>
<?php
class MyClass
{
protected function myFunc() {
echo "MyClass::myFunc()\n";
}
}class OtherClass extends MyClass
{
// Override parent's definition
public function myFunc()
{
// But still call the parent function
parent::myFunc();
echo "OtherClass::myFunc()\n";
}
}$class = new OtherClass();
$class->myFunc();
?>
<?php
class A
{
public function TestFunc()
{
return $this->test;
}
} class B
{
public $test; public function __construct()
{
$this->test = "Nice trick";
} public function GetTest()
{
return A::TestFunc();
}
} $b = new B;
echo $b->GetTest();
?>
楼上正解。