2010-11-07 78 views
1

我試着問這個問題earlyer但我想我趕到的問題並沒有得到翻過我在想什麼......PHP - 擴展類攜帶物品

這是否獲得通過,以價值和$對象一個擴展類?

<?php 

class bar { 

    public function foo($t) { 

     $this->foo = $t; 

    } 

} 

class foo extends bar { 

    public function bar() { 

     return $this->foo; 

    } 

} 

$b = new bar(); 
$b->foo('bar'); 
$f = new foo(); 
echo $f->bar(); 

?> 

如果沒有,是否有另一個decleration(而不是擴展),而不是將父類的對象傳遞給子類?

問候,

菲爾

回答

2

你的例子會產生一個錯誤Undefined property: foo::$foo。我想你想用的是一個static屬性:

class bar { 
    protected static $foo; 
    public function foo ($t) { 
     static::$foo = $t; 
    } 
} 

class foo extends bar { 
    public function bar() { 
     return static::$foo; 
    } 
} 

然後執行以下操作:

$b = new bar(); 
$b->foo('bar'); 
$f = new foo(); 
echo $f->bar(); 

...將回聲bar,它看起來像什麼是你想實現。

+0

謝謝你打開我的眼睛到新的路線。問候。 – 2010-11-07 19:21:21

+1

@Phil:稍微更新了我的答案。你可能還想檢查一下:http://php.net/manual/en/language.oop5.late-static-bindings.php – 2010-11-07 19:22:14

+0

再一次,感謝你的時間和精力 – 2010-11-07 19:29:16