PDA

View Full Version : سوال: اشکال در پیاده سازی یک کلاس



Jason.Bourne
دوشنبه 12 مرداد 1388, 13:33 عصر
برای هندل کردن خطاها در برنامه ام یک کلاس ساده نوشته ام که متاسفانه اونطور که انتظار می رفت جواب نمیده.
لطفا من را راهنمایی کنید.


class logger {
function logger()
{
error_reporting(E_ALL);
set_error_handler('my_error_handler');
ini_set('display_errors', 0);
}

function my_error_handler($errno, $errstr, $errfile, $errline)
{
...
...
}
}

امیـرحسین
دوشنبه 12 مرداد 1388, 18:05 عصر
فکر نمی کنم که set_error_handler با متد کار کنه، یعنی نام تابع میگیره نه متد.
شما می تونید یک تابع درست کنید و کلاس رو توی اون فراخوانی کنید. اینجوری ساختار شیء گراییتون هم حفظ میشه.

Jason.Bourne
دوشنبه 12 مرداد 1388, 19:23 عصر
یعنی set_error_handler در بیرون از کلاس و در درون یک تابع اجرا بشه و در این تابع شی logger را ایجاد کنم؟

امیـرحسین
دوشنبه 12 مرداد 1388, 19:44 عصر
آره.

error_reporting(E_ALL);
set_error_handler('my_error_handler');
ini_set('display_errors', 0);
function my_error_handler(......)
{
$logger = new logger;
. . .
}

Jason.Bourne
دوشنبه 12 مرداد 1388, 20:37 عصر
اینطوری با هر بار اجرا شدن تابع my_error_handler یک نمونه از کلاس logger ایجاد میشه. درست میگم؟ و اگر درسته این کار اشکالی نداره؟

امیـرحسین
دوشنبه 12 مرداد 1388, 22:54 عصر
آره دقیقا حق با شماست. بهتره که نمونه گیری خارج از تابع باشه. مثلا اینجوری:

error_reporting(E_ALL);
set_error_handler('my_error_handler');
ini_set('display_errors', 0);
$logger = new logger;
function my_error_handler(......)
{
global $logger;
$logger->handler(......);
. . .
}