Если вы решите прекратить использование die()
в своей функции, вы можете переписать свой код в виде:
class Yours {
protected $errno = 0;
protected $error = '';
public function custom_query( $sql_query_string, $single_column = false){
$link = $this->_Link_ID;
// IF LINK IS VALID RESOURCE
if ( !is_resource( $link ) ){
$this->error = "Query attempted without valid link resource. Query : $query_string";
$this->errno = -1;
return null;
}
...
}
}
Или вы можете использовать исключения;
public function custom_query( $sql_query_string, $single_column = false){
$link = $this->_Link_ID;
// IF LINK IS VALID RESOURCE
if ( !is_resource( $link ) ){
throw new Exception( "Query attempted without valid link resource. Query : $query_string", -1);
}
...
}
Я лично пошел бы за исключениями ... Но я думаю, что есть люди, которые не согласны со мной, и я хотел бы прочитать их аргументы.
РЕДАКТИРОВАТЬ Пример исключения. Мы расширим php Расширение класса :
class DbException {
protected $sql;
public __construct( $message = "", $code = 0, $sql = '', $previous = NULL){
parent::__construct( $message, $code, $previous);
$this->sql = $sql;
}
public function getSql(){
return $this->sql;
}
}
// In model:
throw new DbException( "Query attempted without valid link resource.", -1, $query);
// In main application:
try {
ob_start();
// run whole application
} catch( DbException &e){
ob_clean(); // Suppress all output so far
echo "<html><body><div class="error">" . htmlspecialchars( $e->getMessage()) . "</div>";
if( NOT_IN_PRODUCTION){
echo "<div class='sql'>" . htmlspecialchars( $e->getSql()) . "</div>";
}
echo "</body></html>";
}
Исключения:
- обеспечить обратную трассировку (для легкой отладки)
- может быть перехвачено по типу (и, следовательно, вы можете обрабатывать их в подходящем месте или позволить распространяться в основное приложение)
- может содержать дополнительную информацию для лучшей отладки