PHP 函数对 return 和 echo 的工作方式不同。为什么?

PHP function working differently for return and echo. Why?

通过使用以下 class:

class SafeGuardInput{

    public $form;
    public function __construct($form)
    {
        $this->form=$form;
        $trimmed=trim($form);
        $specialchar=htmlspecialchars($trimmed);
        $finaloutput=stripslashes($specialchar);
        echo $finaloutput;
    }

    public function __destruct()
    {
        unset($finaloutput);
    }
}

和调用函数,通过下面的代码,它工作正常。

        <?php 
        require('source/class.php');
        $target="<script></script><br/>";
        $forminput=new SafeGuardInput($target);
        ?>

但是如果在 SafeGuardInput class 中,如果我将 echo $finaloutput; 替换为 return $finaloutput; 然后 echo $forminput; 在 index.php 页面上。这是行不通的。请提供解决方案。

您不能 return 从构造函数中获取任何内容。 new 关键字总是使新创建的对象被分配给语句左侧的变量。所以你使用的变量已经被采用。一旦你记住了这一点,你很快就会意识到没有地方可以放置任何其他可以从构造函数中 returned 的东西!

一个有效的方法是编写一个函数,在请求时输出数据:

class SafeGuardInput{

    public $form;
    public function __construct($form)
    {
        $this->form=$form;
    }

    public function getFinalOutput()
    {
        $trimmed = trim($this->form);
        $specialchar = htmlspecialchars($trimmed);
        $finaloutput = stripslashes($specialchar);
        return $finaloutput;
    }
}

然后你就可以像这样正常调用它了:

$obj = new SafeGuardInput($target);
echo $obj->getFinalOutput();