我在這裏是新人,但是一個奇怪的問題讓我把頭撞在牆上。 我也是PHP新手,在C#和C中有一些經驗。 但是,我的問題是相當基本的變量處理,更明確地分配給變量。PHP類中的數據成員不會被分配?
比方說,我們有一個代碼如下:
class PrebaciApp extends Form {
public $operation;
public function getOperation(){
return $this->operation;
}
public function setOperation($setOp){
$this->operation=$setOp;
}
public function __construct() {
$this->addWidget(new HiddenBox('hidden'));
$this->addWidget(new TextBox('text1'));
$this->addWidget(new Button('btn1', '+', 'onPlus'));
$this->addWidget(new Button('btn2', '-', 'onMinus'));
$this->addWidget(new Button('btn3', '=', 'onEq'));
}
public function onPlus() {
$this->setOperation('+');
**var_dump($this->operation);**
}
public function onMinus() {
$this->setOperation('-');
}
protected function onEqual() {
**var_dump($this->operation);**
switch ($this->operacija) {
case '+':
//some logic
case '-':
//some logic
case '*':
//some logic
}
$this->operation='';
}
}
?>
讓我們假設所謂的第一種方法是onPlus或onMinus然後onEqual。 現在由於某種原因,onEqual方法中的var_dump聲明爲null,而onPlus中的var_dump說的是字符串,'+'是正確的。
所以我的問題是,爲什麼是$操作,方法onPlus或onMinus結束後,設置爲空?我在PHP中丟失了什麼明顯的東西?在使用監視變量的Visual Studio中,我可以更輕鬆地辨別出問題。
編輯:嗯我真的不知道你是什麼意思,得到我測試這個類的過程。由於PHP中沒有監視變量,我只需更正然後運行php腳本。所謂的F5測試:D。
但是我確實有一個問題的概念,層次結構是PrebaciApp擴展窗體,它擴展了包含Widget對象的集合(數組)的WidgetContainer。
所以這是很多張貼在這裏。
但方法實際上是在按下網頁上的按鈕後調用的,我認爲這是通過Form或其他類發送的,然後調用PrebaciApp
。我認爲唯一合乎邏輯的解釋是,起始網頁然後調用另一個PrebaciApp實例,它在null上有$操作。
也許我需要單身或靜態?
什麼是兩個星號?我以前沒見過。 – Adam 2011-03-09 19:48:26
另外,你的意思是寫'$ this-> operacija'?在'onEqual'中的 – Adam 2011-03-09 19:49:54
中,您有不同的名稱'operacija',並且您還可以將代碼示例放在您使用此PrebaciApp對象的位置。 – jcubic 2011-03-09 19:56:05