【发布时间】:2012-02-02 06:16:47
【问题描述】:
我正在创建一个带有字符串验证方法的类。我不能像这样为对象引用重新赋值:
class clearText
{
private $text;
function __construct($input)
{
$this->text = $input;
}
public function clearUp()
{
// …
// functions to sanitize the string in $this->text
// …
$this = $this->text;
}
}
$content = new clearText($_POST['content']);
$content->clearUp();
如上例输出:
致命错误:无法在 \clearText.php 中的 13
行重新分配 $this
当我调用clearUp() 时,我不再需要该对象,所以我想避免像这里那样指定这个赋值,每次调用该方法时:
$content = new clearText($_POST['content']);
$content->clearUp();
$content = $content->text;
有没有什么方法可以做到这一点在方法中?
一个可能的答案
有人建议返回该值,以便我可以在执行该方法的同一语句中将其重新分配给对象变量。答案已被删除,但它可以满足我的需要。
方法定义:
public function clearUp()
{
// …
// functions to sanitize the string in $this->text
// …
return $this->text;
}
实例化时:
$content = new clearText($_POST['content']);
$content = $content->clearUp();
【问题讨论】:
-
object 可以将自己转换为原始数据类型是没有意义的。但是,您可以覆盖该类的
__toString方法。 -
我必须承认我不知道你为什么试图修改
$this对象引用。如果您不需要该对象,请使用带有静态方法的静态类。 -
当然,我对对象做的不仅仅是调用一种方法。不过,我可能高估了在一个项目中只保留函数式或面向对象的代码的想法。
标签: php oop this variable-assignment