为了账号安全,请及时绑定邮箱和手机立即绑定

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

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

PHP
吃鸡游戏 2023-05-12 14:29:28
通过使用以下类: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 页面上。这是行不通的。请提供解决方案。
查看完整描述

1 回答

?
繁星淼淼

TA贡献1775条经验 获得超11个赞

你不能从构造函数返回任何东西。关键字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();


查看完整回答
反对 回复 2023-05-12
  • 1 回答
  • 0 关注
  • 94 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信