PHP函数的回车和echo的工作方式不同。为什么呢?

问题描述 投票:0回答:1

通过使用下面的类。

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页面。它不工作。请提供一个解决方案。

php function return echo
1个回答
1
投票

你不能从构造函数中返回任何东西。在 new 关键字总是导致新创建的对象被分配到语句左侧的变量中。所以你使用的变量已经被占用了。一旦你记住了这一点,你很快就会意识到没有地方可以放任何其他的东西,这些东西将从构造函数中返回!一个有效的方法是写一个函数,当请求时,它将输出数据。

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

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();
© www.soinside.com 2019 - 2024. All rights reserved.