Вопрос
Просто небольшой вопрос.Скажем, вызовите метод следующим образом
mysql_pconnect("server","tator_w","password")
or die("Unable to connect to SQL server");
Могу ли я заставить 'die' вызвать метод, а не отображать текстовое сообщение?Если да, то каким образом?
Решение
Вам было бы лучше использовать оператор if, а не полагаться на оценку короткого замыкания, если вы хотите сделать что-то более сложное, например:
if (!mysql_pconnect("server","tator_w","password")) {
call_a_function();
//some other stuff
die(); //if you still want to die
}
Другие советы
Это позволяет вам зарегистрировать функцию, которая будет вызвана при выходе из системы.Тогда вы можете просто die()
или exit()
без параметра, который будет вызывать ваш метод.
(вы также можете найти set_error_handler() set_error_handler() интересно, хотя и немного не связано)
Ну, не совсем, но ты просто делаешь
if(!mysql_pconnect("server","tator_w","password")) {
$some_obj->some_method();
exit(1);
}
Почему бы просто не ввести вызов функции, которая возвращает строку?
function myDieFunction()
{
// do some stuff
return("I died!");
}
die(myDieFunction());
Или вы могли бы попробовать функция выключения регистра
Другой (но не такой приятный) способ:
mysql_pconnect("server","tator_w","password")
or foo() & bar() & die("Unable to connect to SQL server");
Обратите внимание на двоичный оператор &
вместо логического оператора вызываются все функции.
Невозможность подключиться к базе данных, вероятно, является серьезной проблемой - я считаю это главной целью для использования исключений.
Если вы не можете подключиться к базе данных, проблема, вероятно, нуждается в деликатном решении, и вы, вероятно, захотите записать что-нибудь о том, что пошло не так, и где это пошло не так, чтобы иметь возможность улучшить свой код, чтобы избежать проблемы в будущем.
Просто быстрый набросок способа использования исключений.
файл view_cart.php
<?php
try
{
require_once('bootstrap.php');
require_once('cart.php');
require('header.php');
// Get the items in the cart from database
$items = Cart::getItems();
// Display them to the user
foreach ($items as $item)
{
echo $item->name.', '$item->price.'<br />';
}
}
catch (Exception $e)
{
// Log the exception, it will contain useful info like
// the call stack (functions run, paramaters sent to them etc)
Log::LogException($e);
// Tell the user something nice about what happened
header('Location: technical_problem.html');
}
require('footer.php');
файл bootstrap.php
<?php
$result = mysql_pconnect("server", "tator_w", "password");
if ($result === false)
{
throw new Exception('Failed to connect to database');
}
// Select database
// Setup user session
// Etc