考慮下面的代碼:靜態
<?php
class MyClass {
public function print() {
echo $this->number . "\n";
}
public static function staticPrint() {
echo "staticPrint\n";
}
}
class MyExtendedClass extends MyClass {
protected $number = 100;
public function extendedPrint() {
$this->print();
$this::print(); // What's the difference?
$this->staticPrint(); // Why is this allowed?
$this::staticPrint();
echo "Print done...!\n";
}
}
$myExtendedClass = new MyExtendedClass();
$myExtendedClass->extendedPrint();
與下面的輸出:
100
100
Print done...!
有$this->print()
和$this::print()
之間有什麼區別?
http://stackoverflow.com/questions/4361598/php-static-and-non-static-functions-and-objects – salih0vicX
可能:http://stackoverflow.com/a/9207510/ 398939? –
'$ this-> print()'和'$ this :: print()'之間沒有區別。但是'$ var-> print()'和'$ var :: print()'之間存在(甚至在類內部)。請參閱[我的答案](http://stackoverflow.com/a/39891561/1421194)。 – Sasha