Pregunta
Sólo una pregunta rápida. Decir una llamada de un método como tal
mysql_pconnect("server","tator_w","password")
or die("Unable to connect to SQL server");
¿Puedo tener la 'morir' llamar a un método en lugar de mostrar un mensaje de texto? Si es así, ¿cómo?
Solución
Usted sería mejor usar una sentencia if en lugar de confiar en la evaluación de cortocircuito si quieres hacer algo más complicado, por ejemplo:.
if (!mysql_pconnect("server","tator_w","password")) {
call_a_function();
//some other stuff
die(); //if you still want to die
}
Otros consejos
Se le permite registrar una función que se llamará cuando las salidas del sistema. A continuación, puede die()
o exit()
sin un parámetro, que llame a su método.
(también se puede encontrar set_error_handler () interesante , si ligeramente no relacionado)
Bueno, no exactamente, pero que acaba de hacer
if(!mysql_pconnect("server","tator_w","password")) {
$some_obj->some_method();
exit(1);
}
¿Por qué no poner en una llamada a una función que devuelve una cadena?
function myDieFunction()
{
// do some stuff
return("I died!");
}
die(myDieFunction());
O puede probar con el registrarse función de apagado
Otro (pero no tan agradable) así:
mysql_pconnect("server","tator_w","password")
or foo() & bar() & die("Unable to connect to SQL server");
Tenga en cuenta el operador binario &
en lugar de un operador booleano que tener todas las funciones llamadas.
No ser capaz de conectarse a la base de datos es probablemente un problema severo - Considero que es un objetivo prioritario para el uso de excepciones
.Si usted no es capaz de conectarse a la base de datos probable que el problema tiene que ser manejado con delicadeza, y es probable que desea registrar algo sobre lo que salió mal, y en el que salió mal para poder hacer que el código mejor evitar la problema en el futuro.
Sólo un rápido bosquejo de una manera de utilizar excepciones.
archivo 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 archivo
<?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