Domanda
Solo una breve domanda. Dire una chiamata di un metodo in questo modo
mysql_pconnect("server","tator_w","password")
or die("Unable to connect to SQL server");
Posso avere il 'die' chiamare un metodo piuttosto che visualizzare un messaggio di testo? Se sì, come?
Soluzione
Si sarebbe meglio utilizzare un'istruzione if piuttosto che basarsi sulla valutazione di corto circuito, se si vuole fare qualcosa di più complicato, per esempio:.
if (!mysql_pconnect("server","tator_w","password")) {
call_a_function();
//some other stuff
die(); //if you still want to die
}
Altri suggerimenti
E 'consente di registrare una funzione che verrà chiamata quando le uscite del sistema. Allora si può semplicemente die()
o exit()
senza un parametro, che chiamerà il metodo.
(si può anche trovare set_error_handler () interessante , se un po 'estranei)
Beh, non esattamente, ma basta fare
if(!mysql_pconnect("server","tator_w","password")) {
$some_obj->some_method();
exit(1);
}
Perché non basta mettere in una chiamata di funzione che restituisce una stringa?
function myDieFunction()
{
// do some stuff
return("I died!");
}
die(myDieFunction());
Oppure si potrebbe provare il registrare la funzione di spegnimento
Un altro modo (ma non così bello):
mysql_pconnect("server","tator_w","password")
or foo() & bar() & die("Unable to connect to SQL server");
Si noti l'operatore binario &
invece di un operatore booleano di avere tutte le funzioni chiamate.
Non essendo in grado di connettersi al database è probabilmente un problema grave - Lo considero un obiettivo primario per l'uso delle eccezioni
.Se non si è in grado di connettersi al database il problema probabilmente ha bisogno di essere maneggiato con delicatezza, e probabilmente si desidera registrare qualcosa su cosa è andato storto, e dove è andata male per essere in grado di rendere il codice meglio evitare il problema in futuro.
Basta un rapido schizzo di un modo per utilizzare le eccezioni.
file 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');
file 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