سؤال

مجرد سؤال سريع.قل مكالمة بطريقة كهذه

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

هل يمكنني استدعاء طريقة "الموت" بدلاً من عرض رسالة نصية؟إذا كان الأمر كذلك، كيف؟

هل كانت مفيدة؟

المحلول

وأنت ستكون أفضل حالا باستخدام تعليمة if بدلا من الاعتماد على تقييم ماس كهربائى إذا كنت تريد أن تفعل أي شيء أكثر تعقيدا، منها مثلا:

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

نصائح أخرى

register_shutdown_function()

وهذا يتيح لك تسجيل وظيفة التي سيتم استدعاؤها عند مخارج النظام. بعد ذلك يمكنك ببساطة die() أو exit() بدون معلمة، والتي سوف استدعاء الأسلوب الخاص بك.

و(قد تجد أيضا set_error_handler () مثيرة للاهتمام ، إذا لا علاقة لها قليلا)

حسنا، ليس بالضبط، ولكنك فقط

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

لماذا لا تضع فقط في استدعاء دالة تقوم بإرجاع سلسلة؟


function myDieFunction()
{
     // do some stuff

     return("I died!");
}

die(myDieFunction());

وأو هل يمكن أن تحاول تسجيل ظيفة الاغلاق

(ولكن ليس لطيفا) وهناك طريقة أخرى:

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

لاحظ & مشغل ثنائي بدلا من المشغل المنطقي أن يكون جميع وظائف استدعاؤها.

من المحتمل أن يكون عدم القدرة على الاتصال بقاعدة البيانات مشكلة خطيرة - فأنا أعتبرها هدفًا رئيسيًا لاستخدام الاستثناءات.

إذا لم تتمكن من الاتصال بقاعدة البيانات، فمن المحتمل أن تحتاج إلى معالجة المشكلة بدقة، وربما تريد تسجيل شيء ما حول الخطأ الذي حدث، وأين حدث الخطأ لتتمكن من تحسين التعليمات البرمجية الخاصة بك لتجنب المشكلة في مستقبل.

مجرد رسم سريع لطريقة استخدام الاستثناءات.

ملف 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

<?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
scroll top