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?

¿Fue útil?

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

register_shutdown_function()

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
Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top