PHP Die soru

6 Cevap php

Sadece hızlı bir soru. Bunun gibi bir arama yöntemidir Say

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

Ben 'die', bir metin mesajı görüntülemek ziyade bir yöntemi çağırmak olabilir? Eğer öyleyse, nasıl?

6 Cevap

Eğer daha karmaşık bir şey, örneğin yapmak istiyorsanız oldukça kısa devre değerlendirme güvenmek yerine bir if deyimi kullanarak daha iyi olurdu:

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

Peki, tam olarak değil, ama sadece yapmak

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

Neden sadece bir dize döndüren bir işlev çağrısında koymak değil mi?


function myDieFunction()
{
     // do some stuff

     return("I died!");
}

die(myDieFunction());

Ya register shutdown function deneyebilirsiniz

Başka (ama çok güzel) yol:

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

Ikili operatörü & yerine çağırdığı tüm fonksiyonlara sahip bir boolean operatörü unutmayın.

Veritabanına bağlanmak mümkün olmayan, muhtemelen ciddi bir sorundur - Ben bu istisnaların kullanımı için önemli bir hedef düşünün.

Eğer sorun muhtemelen, özenle ele alınması gereken veritabanına bağlanmak mümkün değildir ve muhtemelen neyin yanlış gittiğini hakkında bir şeyler oturum istiyorsanız, ve bu sorunu önlemek için kod daha iyi yapabilmek için yanlış gittiği takdirde gelecek.

Sadece hızlı bir kroki kadar istisnaları kullanmak için bir yoldur.

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

file 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