【问题标题】:Php: simple code validation failurephp:简单代码验证失败
【发布时间】:2012-06-18 08:35:50
【问题描述】:

我目前正在为框架 Symfony2 中的实体开发一个简单的 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(但它是一个参数:/),并且返回行上应该有一个标识符。

【问题讨论】:

  • 您在哪一行出现此错误?
  • var 仅用于class
  • 我相信是在第三个。但是现在问题已经解决了,感谢Aron的回答
  • @islandmyth 和 PHP4。

标签: php symfony


【解决方案1】:
public function getForm(array $reqFields){

在php中你没有声明参数类型所以你应该在

public function getForm($reqFields){

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

如果您希望参数是可选的 还有

$formHelper = new FormHelper();

还有

$fields = array();

还有

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

我假设 $this 是形式...如果不使用 $formHelper->getData();

【讨论】:

  • 可以在函数定义中输入数组、可调用或类名,请参阅documentation
【解决方案2】:

我注意到至少有两件事

  • 数组不是对象。您不能像使用 new array 那样创建数组实例。
  • 自 PHP 5.3 起,var 关键字为 deprecated。 (而且你用错了)

所以你的代码:

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

应该变成:

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

【讨论】:

    【解决方案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 ( )
       }
    }
    

    【讨论】:

    • 感谢您的信息(至少我现在可以确定要使用什么了),但是,我仍然有同样的错误。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-08-15
    • 1970-01-01
    • 2015-02-01
    • 2016-12-19
    • 2018-10-14
    相关资源
    最近更新 更多