請看下面的代碼片段:PHP:在繼承鏈的每個對象的上下文中調用方法
<?php
class A {
function fn() {
print 'Context: Class:' . get_class($this)
. ' Parent:' . get_parent_class($this) . "\n";
if(get_parent_class($this)) {
parent::fn();
}
}
}
class B extends A { }
class C extends B { }
$a = new A();
$c = new C();
$a->fn();
print "\n";
$c->fn();
?>
運行它會得到以下輸出:
Context: Class:A Parent:
Context: Class:C Parent:B
Fatal error: Cannot access parent:: when current class scope has no parent in /home/andrei/test/test.php on line 10
我相信它應該是這樣的:
Context: Class:A Parent:
Context: Class:C Parent:B
Context: Class:B Parent:A
Context: Class:A Parent:
做什麼您認爲?如果get_parent_class($this)
返回非假值,我們應該安全地假設parent ::已定義嗎?在什麼類上下文中調用fn()
?
輸出的是什麼(new B()) - > fn()產生? – 2009-04-23 14:51:42
同樣的錯誤: 語境:等級:B父:一個 致命錯誤:無法訪問父::當電流類範圍在/home/andrei/test/test.php – 2009-04-23 14:55:16
無父我覺得冠軍應該改變到更具描述性的一個。 – 2009-04-23 15:39:03