gpt4 book ai didi

php - PHP-返回多个状态,而不仅仅是true/false

转载 作者:行者123 更新时间:2023-12-03 07:45:18 25 4
gpt4 key购买 nike

我有一个与PHP类和错误处理有关的概念性问题。.下面是演示我的问题的基本类。

存在用于创建数据库记录的函数,该函数名为“domain_create”。此函数调用辅助函数,以确保要创建的域在数据库表中尚不存在。

过去,我一直使用true或false来反射(reflect)该函数是否找到了记录,但这在我的逻辑上造成了缺陷。.domain_lu函数返回false时会插入记录,但是如果遇到错误,则应这样做。作为选择失败?返回false将使create函数认为未找到任何内容,并继续创建过程。

我的问题是在这种情况下应如何反射(reflect)多个状态?在这种情况下是否有“最佳实践”?

<?php

require_once('auth.base.class.php');
require_once('mysql.class.php');

class auth extends base
{
public function __construct()
{
parent::__construct();
}

/*
* User
*/

public function domain_create($args='')
{
if ( domain_lu($args['dname']) === FALSE )
{
return $error['Domain already in use'];
}
}

/*
* Domain
*/

private function domain_lu($dname)
{
$sql = "SELECT name FROM domain WHERE name = '$dname'";
$this->_mysql->SQLQuery($sql);

if ($this->_mysql->numRow() > 0) return true;
else return false;
}
}

?>

最佳答案

您应该使用Exceptions。如果存在查询错误,则引发异常以说明失败原因。如果该域已经存在,请抛出一个异常,指出该域已经存在。这是一个非常简单的示例:

   public function domain_create($args='')
{
if (!$this->domain_lu($args['dname']))
throw new Exception('domain already in use');
}

private function domain_lu($dname)
{
$sql = "SELECT name FROM domain WHERE name = '$dname'";
$this->_mysql->SQLQuery($sql); // SQLQuery should throw an exception if it fails
return ($this->_mysql->numRow() > 0);
}

您应该真正创建专门的异常类,以便用户可以捕获特定的异常而不必单独依赖异常消息,PHP文档提供了更多有关此的信息。但是,基本上,以这种方式执行操作将在抛出异常后立即从函数中解救出来,并且只要有捕获异常的代码就可以返回。或者,如果未在任何地方捕获它,PHP将终止脚本。

关于php - PHP-返回多个状态,而不仅仅是true/false,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3574088/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com