php错误报告
类函数中是否有报告错误的通用标准 我见过一些将错误字符串传递给的c函数,因此如果有错误,可以查看该字符串中的内容,但需要指针 我不愿意使用返回,因为有时您确实需要其他变量的返回 我尝试的一件事是使用一个标准化的返回对象,其中包含一个错误键以及数据。这似乎还可以,但当与其他类一起使用时,似乎有点笨拙 这是我的最新想法,类有一个内部变量$error,每次调用函数时,$error都会被清除,并用错误字符串或数组更新(甚至可能包含多个错误),当函数完成时,我们可以检查错误是否为空 问题是,如果我在函数中使用函数,我最终会清除错误。我可以将字符串保存在不同的var中,并且在返回之前只将其推送到errorphp错误报告,php,oop,reporting,Php,Oop,Reporting,类函数中是否有报告错误的通用标准 我见过一些将错误字符串传递给的c函数,因此如果有错误,可以查看该字符串中的内容,但需要指针 我不愿意使用返回,因为有时您确实需要其他变量的返回 我尝试的一件事是使用一个标准化的返回对象,其中包含一个错误键以及数据。这似乎还可以,但当与其他类一起使用时,似乎有点笨拙 这是我的最新想法,类有一个内部变量$error,每次调用函数时,$error都会被清除,并用错误字符串或数组更新(甚至可能包含多个错误),当函数完成时,我们可以检查错误是否为空 问题是,如果我在函数中
是否还有其他方法可以优雅可靠地完成此任务?没有通用的标准。解决方案完全取决于您的特殊需求 没有共同的标准。解决方案完全取决于您的特殊需求 考虑学习和使用。它们不是通用的解决方案,但如果使用得当,将大大提高代码的可读性和可理解性。考虑学习和使用。它们不是通用的解决方案,但如果使用得当,将大大提高代码的可读性和可理解性。这是一个经常争论的话题,没有一个真正的答案 但这里有四种我熟悉的最常见的模式
function doSomething()
{
if ( /* expression */ )
{
throw new Exception( 'something went wrong' );
}
}
// Let the registered exception handler do the work
doSomething();
// Or handle this call specifically
try {
doSomething();
}
catch ( Exception $e )
{
echo $e->getMessage();
}
错误代码
function doSomething()
{
if ( /* expression #1 */ )
{
return -1;
}
if ( /* expression #2 */ )
{
return -2;
}
return 1;
}
$return = doSomething();
switch ( $return )
{
case -1;
echo 'Error #1 Found';
break;
case -2;
echo 'Error #2 Found';
break;
default:
echo 'Success';
}
误差参数
function doSomething( &$error )
{
if ( /* expression #1 */ )
{
$error = 'Something went wrong';
}
}
$error = false;
doSomething( $error );
if ( $error )
{
echo $error;
}
错误状态
class Foo
{
private $error = false;
private $errorMsg;
public function doSomething()
{
if ( /* expression */ )
{
$this->setError( 'Something went wrong' );
}
}
public function isError()
{
return $this->error;
}
public function getErrorMsg()
{
return $this->errorMsg;
}
private function setError( $message )
{
$this->error = true;
$this->errorMsg = $message;
}
}
$f = new Foo();
$f->doSomething();
if ( $f->isError() )
{
echo $f->getErrorMsg();
}
在为您的项目选择系统(或系统组合)之前,您需要权衡每个系统的优缺点。这是一个经常争论的话题,没有一个真正的答案 但这里有四种我熟悉的最常见的模式
function doSomething()
{
if ( /* expression */ )
{
throw new Exception( 'something went wrong' );
}
}
// Let the registered exception handler do the work
doSomething();
// Or handle this call specifically
try {
doSomething();
}
catch ( Exception $e )
{
echo $e->getMessage();
}
错误代码
function doSomething()
{
if ( /* expression #1 */ )
{
return -1;
}
if ( /* expression #2 */ )
{
return -2;
}
return 1;
}
$return = doSomething();
switch ( $return )
{
case -1;
echo 'Error #1 Found';
break;
case -2;
echo 'Error #2 Found';
break;
default:
echo 'Success';
}
误差参数
function doSomething( &$error )
{
if ( /* expression #1 */ )
{
$error = 'Something went wrong';
}
}
$error = false;
doSomething( $error );
if ( $error )
{
echo $error;
}
错误状态
class Foo
{
private $error = false;
private $errorMsg;
public function doSomething()
{
if ( /* expression */ )
{
$this->setError( 'Something went wrong' );
}
}
public function isError()
{
return $this->error;
}
public function getErrorMsg()
{
return $this->errorMsg;
}
private function setError( $message )
{
$this->error = true;
$this->errorMsg = $message;
}
}
$f = new Foo();
$f->doSomething();
if ( $f->isError() )
{
echo $f->getErrorMsg();
}
在为项目选择系统(或系统组合)之前,您需要权衡每种方法的优缺点。此外,许多库类与自定义异常对象配对在一起。这使它们能够以统一的方式在整个库中全局处理错误。这使他们能够以统一的方式处理整个库中的全局错误。在写下所有这些之后,你真的值得在你的头像图片上喝啤酒:)哇!表达敬意!我无法验证这些信息(由于开始无知和缺乏时间)。但是我确实对清晰和彻底印象深刻。哦,我不知道你可以用PHP函数doSomething(&$error)来做这件事,这会让事情变得更简单,谢谢你在写了所有这些之后,你真的值得在你的头像图片上喝啤酒:)哇!表达敬意!我无法验证这些信息(由于开始无知和缺乏时间)。但是我对明显的清晰性和彻底性印象深刻。哦,我不知道你可以在PHP函数doSomething(&$error)中实现这一点,这让事情变得更简单,谢谢