2012-06-15 65 views
0

我目前正在爲框架Symfony2中的實體工作一個簡單的PHP函數。該函數不斷產生錯誤,雖然我看不出有什麼問題。這裏的代碼:PHP:簡單代碼驗證失敗

public function getForm(array $reqFields){ 
    var $formHelper = new FormHelper; 
    var $fields = new array; 

    if($reqFields == null){ 
     foreach ($this->getArray() as $k => $v) { 
      array_push($fields, $formHelper->getTextField($v, $k)); 
     } 
    } 

    return $formHelper->getForm($fields); 
} 

我已經導入FormHelper,並在其中的功能存在,就此事。當我執行它時,出現以下錯誤:

Parse error: syntax error, unexpected T_VAR 

什麼問題?

編輯:Netbeans告訴我$ reqFields應該被初始化(但是它是一個參數:/),並且預計在返回行上有一個標識符。

+0

你在哪條線上有這個錯誤? –

+0

'var'只用於'class' – Bob

+0

我認爲它是第三個。但是現在問題已經解決了,這要歸功於Aron的回答 –

回答

7

我注意到兩件事情至少

  • 數組是不是對象。你不能像new array那樣創建一個數組實例。
  • 從PHP 5.3起,var關鍵字是deprecated。 (你正在使用它錯了)

所以,你的代碼:

var $formHelper = new FormHelper; 
var $fields = new array; 

應該改爲:

$formHelper = new FormHelper; 
$fields = array(); 
+0

解決了它,非常感謝! –

+0

+1對於很好的解釋 –

3

數組不是對象!
因此,它是:

var $fields = array(); 

而且你必須在類的頭在功能定義類變量沒有。所以你應該在前面擦掉var

像這樣:

class Foo 
{ 
    public $fields = array(); // var equals public (you should use public, because var is deprecated) 

    public function bar() 
    { 
     print_r($this->fields); // => Array () 
    } 
} 
+0

感謝您的信息(至少我會確切知道現在使用什麼),但是,我仍然有同樣的錯誤。 –

+0

我更新了我的答案:) –

1
public function getForm(array $reqFields){ 

在PHP不聲明的參數類型所以你應該改變它在

public function getForm($reqFields){ 

public function getForm($reqFields = array()){ 

如果YOUT想的參數是可選的 也

$formHelper = new FormHelper(); 

$fields = array(); 

foreach ($this->getArray() as $k => $v) { 

我認爲$這是表格...如果不使用$formHelper->getData();

+1

在函數定義中可以調用一個數組,類型可調用或類名,參見[documentation](http://php.net/manual/en/language.oop5.typehinting.php)。 – jkrcma