类中未定义的变量

时间:2015-11-08 12:43:03

标签: php class variables

我最近用PHP编写了一个类 我试图在类中声明一个变量并在函数中使用str_replace但是它显示未定义的变量

class Status{
  $words = array(".com",".net",".co.uk",".tk","co.cc");
  $replace = " ";
  function getRoomName($roomlink)
    {
      echo str_replace($words,$replace,$roomlink);

    }
}
$status = new Status;
echo $status->getRoomName("http://darsekarbala.com/azadari/");

感谢您的任何帮助

2 个答案:

答案 0 :(得分:1)

函数getRoomname()中的变量未正确处理。您的语法假定变量在函数内声明或在调用函数时传递(它们不是)。

要在课程中执行此操作,请在使用$this->时执行此操作,如下所示:

function getRoomName($roomlink)
{
    echo str_replace($this->words,$this->replace,$roomlink);
}

有关更多信息,请查看this page of the manual

答案 1 :(得分:0)

也许是因为版本或其他内容,当我测试您的确切代码时,我得到syntax error, unexpected '$words' (T_VARIABLE), expecting function (T_FUNCTION),因此将变量设置为privatepublic应该可以解决这个问题。

关于undefined varible,您必须使用$this->从您的班级访问它们。看看:

class Status{
    private $words = array(".com",".net",".co.uk",".tk","co.cc"); // changed
    private $replace = " "; // changed
    function getRoomName($roomlink){
        echo str_replace($this->words, $this->replace, $roomlink); // changed
    }
}
$status = new Status;
echo $status->getRoomName("http://darsekarbala.com/azadari/");

此外,由于getRoomName没有返回任何内容,因此回复它并没有太大作用。你可以:$status->getRoomName("http://darsekarbala.com/azadari/");
或改为:
return str_replace($this->words, $this->replace, $roomlink);