php - PHP 类输出消息的最佳实践
问题描述
我一直在寻找一段时间,但我只能找到分歧的意见,其中一些非常令人困惑。
如果满足某些条件,返回消息的最佳做法是什么?
例如,我有一个类,如果没有$_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
解决方案
最佳实践也基于应用程序。
在您的示例中,我应该返回一个异常。在应用程序的顶部,您可以运行 try/catch 来处理异常。
例如
<?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();
}
?>
好处是,您可以在一个位置处理消息,并且更容易处理错误消息,例如
echo "<strong>". $exception->getMessage(). "</strong>";
编辑:与@Ggg 所说的原因相同:
一般的经验法则:一个类返回数据,所以当你调用 getUser 时,它应该接收用户数据。回声不是工作班(imo)– Ggg
如果您不想使用 try/catch 模块,我建议您不要在发生消息时回显消息,而是返回布尔值或消息。与上述相同的原因: 在一个地方处理消息。例如
<?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;
}
}
?>
最后:
<?php
$user = new User();
echo $user->getUser();
// OR (and I think better):
if (!$user->login()) {
echo 'Invalid login';
}
?>
推荐阅读
- python - 我的情节不是从原点开始如何解决它
- javascript - 我的 React 项目中可能缺少什么 CSS 样式没有应用于我的组件?
- python - 有没有办法可以使用 Python 删除所有 Windows 的还原点?
- javascript - 将键码写入控制台。反复
- reactjs - 尝试在用户登录 React js 时从 DB 启用最新的测验级别
- go - 持续时间的时间单位
- jquery - 如何将猫头鹰轮播连接到wordpress?
- python - 在 python 中打印某个类的对象时会打印什么?
- java - Red.xml 与 Jenkins 集成 - 引发模块导入错误
- .htaccess - 将带有查询字符串的 URL 重定向到新的“漂亮”URL,以避免重复内容