PDA

View Full Version : مبتدی: محدوده متغیر ها



desatir7316
دوشنبه 02 مرداد 1391, 22:01 عصر
سلام دوستان
این کد رو دیدم توی محدوده متغیر هاش یه سوالی برام پیش اومد:
میشه یه نگاهی بندازید


<?php
try {
$dbh = new PDO('odbc:SAMPLE', 'db2inst1', 'ibmdb2',
array(PDO::ATTR_PERSISTENT => true));
echo "Connected\n";
} catch (Exception $e) {
die("Unable to connect: " . $e->getMessage());
}

try {
$dbh->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);

$dbh->beginTransaction();
$dbh->exec("insert into staff (id, first, last) values (23, 'Joe', 'Bloggs')");
$dbh->exec("insert into salarychange (id, amount, changedate)
values (23, 50000, NOW())");
$dbh->commit();

} catch (Exception $e) {
$dbh->rollBack();
echo "Failed: " . $e->getMessage();
}
?>

الان $dbh که توی try اول اومده ،چطور توی try دوم و catch دوم هم شناخته میشه؟
ممنون

colors
دوشنبه 02 مرداد 1391, 23:35 عصر
درود

چیز خاصی نیست! اول میگه سعی کن یک شی از کلاس PDO بسازی و اونو تو متغیر dbh قراره بده که وقتی ست بشه تو try های دیگه هم قابل استفاده هست ( تو متد یا فانکشنی چیزی ساخته نمیشه که قابل دسترس نباشه). و اگه نتونه بسازه چون از die استفاده کرده اجرای برنامه متوقف میشه و ...

desatir7316
دوشنبه 02 مرداد 1391, 23:45 عصر
تو متد یا فانکشنی چیزی ساخته نمیشه که قابل دسترس نباشه
ممنون colors عزیز، مطمئنی که دلیلش همینه؟
آخه من با دید برنامه نویسی c به این قضیه نگاه کردم

colors
دوشنبه 02 مرداد 1391, 23:51 عصر
بله مطمئنم دلیلش همینه. try میدان عمل متغیر ها رو سراسری تولید میکنه.

البته تو فانکش و متدهم میشه متغیر رو سراسری تعریف کرد.