应用程序中的错误处理函数
Error handler function in application
我在编程方面相对较新。我正在尝试捕获并显示我的应用程序中的错误。有了全局变量就简单了:
$errors = '';
class Name {
/**
* Validate form
*/
public function validate_form() {
global $errors;
(...)
if ( empty($_POST["blabla"]) ) {
$errors = 'Error';
}
(...)
return;
}
/**
* Display errors
*/
public function show_error() {
global $errors;
if(!empty($errors)) return '<div class="error">' . PHP_EOL . htmlspecialchars($errors) .'</div>';
}
}
...但我读到您不应该使用全局变量。如果没有全局变量,我怎么能做同样的事情?
对不起我的英语 ;)
你可以抛出异常
<?php
class Name {
/**
* Validate form
*/
public function validate_form() {
(...)
if ( empty($_POST["blabla"]) ) {
throw new RuntimeException( 'Error' );
}
(...)
return;
}
$obj = new Name();
/**
* Display errors
*/
public function show_error($e) {
return '<div class="error">' . PHP_EOL . htmlspecialchars($e->getMessage()) .'</div>';
}
}
// TEST
try {
$obj->validate_form();
}
catch(Exception $e) {
$obj->show_error($e);
}
不让它成为全球性的怎么样,即:
<?php
class Name {
public $errors;
/*
* Validate form
*/
public function validate_form() {
(...)
if ( empty($_POST["blabla"]) ) {
$this->errors = 'Error';
}
(...)
return;
}
}
然后每次 运行 中的一个函数 class,检查是否产生错误:
$obj = new Name()->validate_form();
if(isset($obj->errors)){
//oops, an error occured, do something
}
我在编程方面相对较新。我正在尝试捕获并显示我的应用程序中的错误。有了全局变量就简单了:
$errors = '';
class Name {
/**
* Validate form
*/
public function validate_form() {
global $errors;
(...)
if ( empty($_POST["blabla"]) ) {
$errors = 'Error';
}
(...)
return;
}
/**
* Display errors
*/
public function show_error() {
global $errors;
if(!empty($errors)) return '<div class="error">' . PHP_EOL . htmlspecialchars($errors) .'</div>';
}
}
...但我读到您不应该使用全局变量。如果没有全局变量,我怎么能做同样的事情?
对不起我的英语 ;)
你可以抛出异常
<?php
class Name {
/**
* Validate form
*/
public function validate_form() {
(...)
if ( empty($_POST["blabla"]) ) {
throw new RuntimeException( 'Error' );
}
(...)
return;
}
$obj = new Name();
/**
* Display errors
*/
public function show_error($e) {
return '<div class="error">' . PHP_EOL . htmlspecialchars($e->getMessage()) .'</div>';
}
}
// TEST
try {
$obj->validate_form();
}
catch(Exception $e) {
$obj->show_error($e);
}
不让它成为全球性的怎么样,即:
<?php
class Name {
public $errors;
/*
* Validate form
*/
public function validate_form() {
(...)
if ( empty($_POST["blabla"]) ) {
$this->errors = 'Error';
}
(...)
return;
}
}
然后每次 运行 中的一个函数 class,检查是否产生错误:
$obj = new Name()->validate_form();
if(isset($obj->errors)){
//oops, an error occured, do something
}