PHP类输出消息的最佳实践

时间:2018-08-25 13:54:35

标签: php class oop

我已经搜索了一段时间,但是我只能找到分歧意见,其中一些意见非常令人困惑。

如果满足某些条件,返回消息的最佳实践是什么?

例如,如果没有设置$_GET变量,我有一个要输出消息的类-这是类文件:

<?php
class User{
    public $_name;

    public function getUser(){
        if(empty($_GET)){
            echo 'There\'s no user!';
            return;
        }
        //do something else
        return;
    } 
}
?>

然后这是我正在使用该类的文件:

<?php
$user = new User();
$user->getUser();
?>

您现在可以看到,我正在echo方法中使用getUser(),但是我觉得这是非常糟糕的做法:(。因此,基本上有一种好的做法吗?只要它们有效就可以了;如果有良好的做法,可以请您解释一下为什么它比别人更好?

谢谢! :D

1 个答案:

答案 0 :(得分:2)

最佳实践也取决于应用程序。

在您的示例中,我应该返回一个异常。 在应用程序的顶部,您可以运行try / catch来处理异常。

例如

find . -name *progre*

最后:

<?php
class User{
    public $_name;

    public function getUser(){
        if(empty($_GET)){
            throw new Exception("There is no User");
        }
        //do something else
        return;
    } 
}
?>

好处是,您可以在一个位置处理消息,例如,更容易处理错误消息

<?php
try {
    $user = new User();
    $user->getUser();
} catch (Exception $exception) {
    echo $exception->getMessage();
}
?>

编辑:@Ggg所说的相同原因

  

一般的经验法则:一个类返回数据,所以当您一次调用getUser时,   它有望接收用户数据。回荡东西不是职业   (imo)– Ggg

如果您不想使用try / catch模块,建议不要在出现消息时回显该消息,而应返回布尔值或消息。基于上述相同的原因:在一个地方处理邮件。 例如

echo "<strong>". $exception->getMessage(). "</strong>";

最后:

<?php
class User{
    public $_name;

    public function getUser(){
        if(empty($_GET)){
            return 'no user found'
        }
        //do something else
        return;
    }

    public function login(){
        if(empty($_GET)){
            return false
        }
        //do something else
        return;
    } 
}
?>