Note:
In non-static contexts, the called class will be the class of the object instance. Since $this-> will try to call private methods from the same scope, using static:: may give different results. Another difference is that static:: can only refer to static properties.
Example #1
class Father
{
public function __construct()
{
$this->init();
}
private function init()
{
echo ‘father‘ . PHP_EOL;
}
}
class Son extends Father
{
public function __construct()
{
parent::__construct();
$this->init();
}
private function init()
{
echo ‘son‘ . PHP_EOL;
}
}
new Son();
输出
father
son
Example #2
class Father
{
public function __construct()
{
$this->init();
}
private function init()
{
echo ‘father‘ . PHP_EOL;
}
}
class Son extends Father
{
private function init()
{
echo ‘son‘ . PHP_EOL;
}
}
new Son();
输出
father
原文:http://my.oschina.net/gilbertch/blog/467272