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?

Était-ce utile?

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

register_shutdown_function()

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
Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top