۲ اميرمحمد رضائی
توضیح قسمتی از کد
جامعه وردپرس (برنامه نویسی) ایجاد شده در ۱۱ اسفند ۱۴۰۱
try {
    $connection = new PDO("mysql:host=$host;dbname=$database;", $userName, $password);
    echo "Connect Successful";
} catch (PDOException $error) {
    echo 'Connection Fail: ' . $error->getMessage();
}

سلام و درود سوالم درباره کد بالا هست که با استفاده از کلاس PDO به دیتابیس متصل میشه - من کد بالا رو درک میکنم، ولی اون قسمت PDOException $error رو درک نمیکنم، الان از روی کلاس PDOException یه object ساخته ؟ چه طور بدون کلمه new این کار رو کرده ؟

از نظر شی گرایی برای بنده سوال بود این مورد

اميرمحمد رضائی ۱۱ اسفند ۱۴۰۱، ۲۰:۵۳

سلام،

داخل پرانتز نوع آبجکت مشخص شده و این آبجکت در زمان پرتاب ایجاد میشود. این لینک رو ببینید.

برای مثال تعریف میکنیم اگر چنین شرایطی در کد اتفاق نیوفتاد یک اکسشپن تولید شود:

if (!$x) {
    throw new Exception('Division by zero.');
}

ضمن اینکه یک سری کلاس‌ها برای اکسپشن در php از قبل نوشته شده است، همچنین برای اکسپشن میشه کلاس‌های کاستوم هم ساخت. (کلاس هایی که از کلاس Exception مشتق شده باشند.)

PDOException (از قبل داخل php تعریف شده است) از کلاس RuntimeException که این کلاس از Exception مشتق شده اند.

خود کلاس Exception هم اینترفس Throwable رو پیاده سازی کرده است.

بصورت کلی درخت سلسله مراتبی خطاها و اکسپشن‌ها در php به شکل زیر خواهد بود: (Predefined Exceptions و Exceptions)

Throwable
├── Error
│   ├── ArithmeticError
│   │   ├── DivisionByZeroError
│   │   └── ...
│   ├── AssertionError
│   ├── ParseError
│   ├── TypeError
│   ├── ArgumentCountError
│   └── ...
└── Exception
    ├── RuntimeException
    │   ├── PDOException
    │   ├── UnderflowException
    │   ├── RangeException
    │   ├── ...
    └── LogicException
    │       ├── BadFunctionCallException
    │       ├── InvalidArgumentException
    │       ├── LengthException
    │       └── ...
    └── ErrorException

Throwable کلاس پایه برای همه‌ ی اکسپشن‌ها و خطاها است. این کلاس شامل دو زیرکلاس Exception و Error می‌شود.

محسن موحد ۱۳ اسفند ۱۴۰۱، ۰۶:۵۷