2

我收到以下代码的错误

     class Myclass {
              //...variables

              public function getName() {
                       return $this->strName;
              }

              public function checkDup() {
                      if(empty($this->getName())) {  //HERE IS THE ERROR
                        $strMessage = 'Please Enter First Name';
                        return $strMessage;
                      }
              }
     }

     $a = new Myclass (); //assume constructor is present and variables are set in class
     $a->checkDup();

有什么解决办法?我的 getName() 函数返回变量的名称

4

4 回答 4

2

我弄清楚这里出了什么问题。

我应该使用 $this 来引用类成员变量,而不是在类中再次调用 getName() 函数。这将函数更改为:

          public function checkDup() {
                  if(empty($this->strName)) {  //HERE IS THE SOLUTION
                    $strMessage = 'Please Enter First Name';
                    return $strMessage;
                  }
          }
于 2012-12-14T14:50:29.603 回答
1

change:

if(empty($this->getName())) {

to

$name = $this->getName();
if( empty($name) ) {
...

empty() only checks variables as anything else will result in a parse error

于 2012-12-11T11:28:02.023 回答
0

这种empty结构有点傻。见手册

笔记:

在 PHP 5.5 之前,empty() 只支持变量;其他任何事情都会导致解析错误。换句话说,以下内容将不起作用:empty(trim($name))。相反,使用 trim($name) == false。

于 2012-12-11T11:52:36.373 回答
0

我不喜欢这里的任何答案。是的,您可以$this->strName直接参考。但如果你不能呢?如果getName()有一些重要的功能怎么办?

那么唯一的选择是创建另一个变量?$var = $this->getName();. 那也很烂。

通常,每当我动态访问类属性或函数时,我都会将其括在大括号中{},因此:

  1. 我知道它是动态的。
  2. 如果有任何错误,我会得到有意义的错误。

例子:

$this->{$variable};
$this->{$class->property};
$this->{$class->method()};
$this->{function()};
$this->{$array['index']};
于 2013-11-17T10:50:54.373 回答