我最近用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/");
感谢您的任何帮助
答案 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)
,因此将变量设置为private
或public
应该可以解决这个问题。
关于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);