Pergunta

Apenas uma pergunta rápida. Digamos que uma chamada de um método como assim

mysql_pconnect("server","tator_w","password")
               or die("Unable to connect to SQL server");

Posso ter a 'morrer' chamar um método em vez de exibir uma mensagem de texto? Se sim, como?

Foi útil?

Solução

Você seria melhor fora de usar uma instrução if em vez de confiar na avaliação de curto-circuito, se você quiser fazer algo mais complicado, por exemplo:.

if (!mysql_pconnect("server","tator_w","password")) {
    call_a_function();
    //some other stuff
    die(); //if you still want to die
}

Outras dicas

register_shutdown_function()

Ele permite que você registrar uma função que será chamada quando as saídas do sistema. Então você pode simplesmente die() ou exit() sem um parâmetro, que irá chamar o seu método.

(você também pode encontrar set_error_handler () interessante , se ligeiramente alheios)

Bem, não exatamente, mas você acabou de fazer

if(!mysql_pconnect("server","tator_w","password")) {
    $some_obj->some_method();
    exit(1);
}

Porque não basta colocar em uma chamada de função que retorna uma string?


function myDieFunction()
{
     // do some stuff

     return("I died!");
}

die(myDieFunction());

Ou você pode tentar o registrar função de desligamento

Outro (mas não tão bom) maneira:

mysql_pconnect("server","tator_w","password")
    or foo() & bar() & die("Unable to connect to SQL server");

Observe o & operador binário em vez de um operador booleano ter todas as funções chamadas.

Não sendo capaz de se conectar ao banco de dados é provavelmente um problema grave - Eu considero isso um alvo principal para o uso de exceções

.

Se você não é capaz de se conectar ao banco de dados do problema provavelmente precisa ser tratado com delicadeza, e você provavelmente quer registrar algo sobre o que deu errado, e onde é que tinha errado para ser capaz de fazer o seu código melhor para evitar a problema no futuro.

Apenas um rápido esboço de uma maneira de exceções de uso.

arquivo 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');

arquivo 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
Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top