سلام وقت بخیر
در مورد این خط کد سوال دارم:
(db->setAttribute(PDO::ATTR_ERRMODE,PDO::ERRMODE_EXCEPTION$
این کد نوع خطا را set می کند که مثلا از نوع warning باشد یا Exception یا ... درسته؟
در این کد و ساختار ما که نوع خطا از نوع Exception بود پس این کد چه لزومی داشت؟
اگر ممکنه در مورد این تابع بیشتر توضیح بدید که چه پارامترهایی می گیرد و کجا کاربرد دارد.
با تشکر
سلام
توی این کدی که در آموزش گفتیم صرفا هدف این بوده که شما بدونید که Attribute های مختلف توی PDO رو می تونید مقدارشون رو ست کنید.
به نظر میرسه مقدار پیشفرض این attribute روی همون exception باشه.
شما خیلی کلی در نظر بگیرید که setAttribute رو برای تغیر attribute های مختلف در PDO می تونید استفاده کنید
از PDO::setAttribute برای کنترل خطاها در PDO استفاده میکنیم. که به شکل زیر استفاده میکنیم:
public PDO::setAttribute ( int $attribute , array|int $value ) : bool
با استفاده از این کد میتونید وضعیت نمایش خطاها رو مشخص کنید.
معمولا خطاها زمانیکه از بلاک try/catch استفاده میشه، در بخش catch نمایش داده میشه. حالا ممکنه مثلا یک هشدار داشته باشیم یا یک خطای استثناء که PDO در قسمت try اجرا بشه و به قسمت catch منتقل نشه. اما در عین حال واسه سایت ما خطرناک باشه!
در حالت کلی ۳ نوع مود خطا داریم که با استفاده از عبارت ATTR_ERRMODE تنظیم میشه:
$DBH->setAttribute( PDO::ATTR_ERRMODE, PDO::ERRMODE_SILENT );
$DBH->setAttribute( PDO::ATTR_ERRMODE, PDO::ERRMODE_WARNING );
$DBH->setAttribute( PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION );
به عنوان خطای پیشفرض میباشد. اگر شما تنظیمات را روی این نوع خطا قرار دهید تنها خطاهایی که در افزونههای MYSQL یا MYSQLI میباشد را در اختیار دارید.
دو راه دیگر برای برنامهنویسی بدون تکرار یا DRY Programming وجود دارد که بهتر است از آنها استفاده شود:
این مود هشدارها و اخطارهای PHP را نمایش میدهد و برنامه پس از دریافت هشدار به اجرا شدن خود ادامه میدهد. این حالت برای خطایابی مورد استفاده قرار میگیرد.
این مود در بیشتر مواقع مورد استفاده قرار میگیرد زیرا با اعمال آن یک exception یا استثناء مشخص میدهد که میتوان از طریق آن خطاها را بررسی کرده و دادههایی که برای تخریب سایت شما ممکن است خطرناک باشند را پنهان میکند.