Question
Juste une petite question. Dites un appel d'une méthode comme si
mysql_pconnect("server","tator_w","password")
or die("Unable to connect to SQL server");
Puis-je avoir la « mourir » appeler une méthode affiche plutôt qu'un message texte? Si oui, comment?
La solution
Vous seriez mieux d'utiliser une instruction if plutôt que de compter sur l'évaluation de court-circuit si vous voulez faire quoi que ce soit plus compliqué, par exemple:.
if (!mysql_pconnect("server","tator_w","password")) {
call_a_function();
//some other stuff
die(); //if you still want to die
}
Autres conseils
Il vous permet d'enregistrer une fonction qui sera appelée lors de la sortie du système. Ensuite, vous pouvez tout simplement ou die()
sans paramètre exit()
, qui fera appel à votre méthode.
(vous pouvez également trouver set_error_handler () intéressant , si un peu différent)
Eh bien, pas exactement, mais vous faites juste
if(!mysql_pconnect("server","tator_w","password")) {
$some_obj->some_method();
exit(1);
}
Pourquoi ne pas simplement mettre dans un appel de fonction qui renvoie une chaîne?
function myDieFunction()
{
// do some stuff
return("I died!");
}
die(myDieFunction());
Ou vous pouvez essayer enregistrer la fonction d'arrêt
Une autre (mais pas si belle) manière:
mysql_pconnect("server","tator_w","password")
or foo() & bar() & die("Unable to connect to SQL server");
Notez l'opérateur binaire au lieu d'un &
opérateur booléen avoir toutes les fonctions appelées.
Ne pas être capable de se connecter à la base de données est probablement un problème grave - je considère qu'il est une cible de choix pour l'utilisation des exceptions
.Si vous n'êtes pas en mesure de se connecter à la base de données le problème doit probablement être traitée avec délicatesse, et que vous voulez sans doute de se connecter quelque chose sur ce qui a mal tourné, et où il a mal tourné pour être en mesure de rendre votre code mieux pour éviter la problème à l'avenir.
Juste un croquis rapide une façon d'utiliser des exceptions.
fichier 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');
fichier 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