最近我一直在嘗試自我教導一些OOP,並且我遇到了一些似乎對我來說很奇怪的東西。我想知道是否有人可以向我解釋這一點。屬性未被構造函數定義
我在這個網站啓發的一個問題來嘗試這個小試件的代碼(PHP):
class test1 {
function foo ($x = 2, $y = 3) {
return new test2($x, $y);
}
}
class test2 {
public $foo;
public $bar;
function __construct ($x, $y) {
$foo = $x;
$bar = $y;
}
function bar() {
echo $foo, $bar;
}
}
$test1 = new test1;
$test2 = $test1->foo('4', '16');
var_dump($test2);
$test2->bar();
簡單的東西。 $test1
應該內$test2
是NULL
對象返回到$test2
,與$test2->foo
等於4並且$test2->bar
等於16我的這一問題是,雖然$test2
被製成test2
類的一個對象,既$foo
和$bar
。構造函數肯定正在運行 - 如果我在構造函數中回顯$foo
和$bar
,它們將顯示出來(使用正確的值,不會少於)。然而,儘管他們被分配了$test1->foo
的值,但他們不會通過var_dump
或$test2->bar
顯示出來。有人能向我解釋這種對知識的好奇嗎?
$這個 - >富= $ X; $ this-> bar = $ y;在構造函數中;和功能欄(){ echo $ this-> foo,$ this-> bar; }否則$ foo和$ bar只是局部範圍變量 – 2012-07-18 21:28:50
可能重複的[PHP變量在類中](http://stackoverflow.com/questions/1292939/php-variables-in-classes) – Gordon 2012-07-18 21:37:06