猿问

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

通过使用以下类:


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 类中替换echo $finaloutput; 返回$finaloutput;然后echo $forminput; 在 index.php 页面上。这是行不通的。请提供解决方案。


吃鸡游戏
浏览 114回答 1
1回答

繁星淼淼

你不能从构造函数返回任何东西。关键字new总是使新创建的对象被分配给语句左侧的变量。所以你使用的变量已经被采用。一旦记住这一点,您很快就会意识到没有地方可以放置从构造函数返回的任何其他内容!一种有效的方法是编写一个函数,该函数将在请求时输出数据:class SafeGuardInput{&nbsp; &nbsp; public $form;&nbsp; &nbsp; public function __construct($form)&nbsp; &nbsp; {&nbsp; &nbsp; &nbsp; &nbsp; $this->form=$form;&nbsp; &nbsp; }&nbsp; &nbsp; public function getFinalOutput()&nbsp; &nbsp; {&nbsp; &nbsp; &nbsp; &nbsp; $trimmed = trim($this->form);&nbsp; &nbsp; &nbsp; &nbsp; $specialchar = htmlspecialchars($trimmed);&nbsp; &nbsp; &nbsp; &nbsp; $finaloutput = stripslashes($specialchar);&nbsp; &nbsp; &nbsp; &nbsp; return $finaloutput;&nbsp; &nbsp; }}然后你可以像这样以正常的方式调用它:$obj = new SafeGuardInput($target);echo $obj->getFinalOutput();
随时随地看视频慕课网APP
我要回答