</>مدرسه زیب‌موجیاد بگیر، تمرین کن، بساز
مدرسهPHPدرس 21
درس 21 از 26 · ۴۵ دقیقه

خطایابی؛ حدس نزن، مسئله را کوچک کن

خطا بخشی طبیعی از ساخت برنامه است. مسیر سریع این است: خطا را دوباره بساز، اولین پیام را کامل بخوان، داده‌های همان نقطه را ببین و مسئله را تا کوچک‌ترین نمونه کم کن.

۰امتیاز شما
نقشه این درس

بعد از این درس دقیقاً چه بلدی؟

  • می‌توانی «بازتولید» را با مثال همین درس توضیح بدهی.
  • می‌دانی «پیام و Stack trace» کجای مسئله به کار می‌آید.
  • تغییر پیشنهادی درس را اجرا می‌کنی و از روی نتیجه، اشتباه را پیدا می‌کنی.
به زبان زندگی واقعی

پیداکردن قطعی برق

به‌جای تعویض همه سیم‌ها، از نزدیک‌ترین فیوز شروع می‌کنیم و مسیر را بخش‌به‌بخش می‌سنجیم. هر مشاهده یک احتمال را حذف می‌کند.

نکته مهم برای شروع PHP

خطا بخشی طبیعی از ساخت برنامه است. مسیر سریع این است: خطا را دوباره بساز، اولین پیام را کامل بخوان، داده‌های همان نقطه را ببین و مسئله را تا کوچک‌ترین نمونه کم کن.

چرا مهم است؟ به‌جای دست‌کاری تصادفی کد، مقدار هر قیمت و جمع میانی را بررسی می‌کنیم تا اولین نقطه اختلاف را پیدا کنیم.

اولین تمرین تو: به‌جای دست‌کاری تصادفی کد، مقدار هر قیمت و جمع میانی را بررسی می‌کنیم تا اولین نقطه اختلاف را پیدا کنیم.

مفهوم‌های اصلی

اول بفهم، بعد کد بنویس

بازتولید

قدم‌های دقیق رسیدن به خطا را مشخص می‌کند.

پیام و Stack trace

نوع خطا، فایل، خط و مسیر فراخوانی‌ها را نشان می‌دهد.

Log

جزئیات فنی لازم را برای توسعه‌دهنده ثبت می‌کند، بدون افشای رازها به کاربر.

سناریوی واقعی

جمع سبد خرید اشتباه است

به‌جای دست‌کاری تصادفی کد، مقدار هر قیمت و جمع میانی را بررسی می‌کنیم تا اولین نقطه اختلاف را پیدا کنیم.

موقعیتتصمیم برنامهنتیجه قابل دیدن
بازی ساختن کد

قطعه‌ها را به ترتیب درست بچین

روی هر قطعه بزن تا وارد پاسخ شود؛ برای برگرداندن دوباره روی آن بزن. با دکمه‌های جابه‌جایی هم می‌توانی بدون کشیدن و رهاکردن ترتیب را اصلاح کنی.

مرحله ۲ از ۳ · مرتب‌کردن کد
بانک قطعه‌هاقطعه مناسب را انتخاب کن
ترتیب پاسخ تواز بالا به پایین اجرا می‌شود

    هنوز پاسخی بررسی نشده است.

    کارگاه تعاملی

    کد را تغییر بده و نتیجه را همان‌جا ببین

    این مفسر آموزشی امن، بخش پایه PHP شامل متغیر، محاسبه، رشته، آرایه و if/else را در مرورگر اجرا می‌کند. کد به سرویس دیگری ارسال نمی‌شود.

    lesson-21.php
    خروجی برنامهمفسر آموزشی آماده است
    برای دیدن نتیجه، «اجرای کد» را بزن.
    خروجی با تغییر کد دوباره محاسبه می‌شود.
    کدخوانی استاد

    این مثال خط‌به‌خط چه می‌گوید؟

    فعلاً حفظ نکن؛ هر خط را به یک جمله ساده تبدیل کن.

    1. 1<?php

      از اینجا مفسر PHP شروع به خواندن کد می‌کند.

    2. 2$prices = [120000, 85000, 45000];

      یک مقدار با نام $prices نگه‌داری می‌شود تا در خط‌های بعد دوباره استفاده شود.

    3. 3$total = array_sum($prices);

      یک مقدار با نام $total نگه‌داری می‌شود تا در خط‌های بعد دوباره استفاده شود.

    4. 4var_dump($prices, $total);

      این خط بخشی از منطق اصلی مثال است؛ نام‌ها و علامت‌ها را از راست به چپ، بخش‌به‌بخش بخوان.

    منبع رسمی همین درسمستندات اصلی PHP را ببین ←برای عمیق‌ترشدن؛ لازم نیست در شروع همه آن را بخوانی.
    حالا نوبت توست

    یکی از قیمت‌ها را به رشته «85,000» تبدیل کن و خطا یا نتیجه را ببین. سپس داده را در همان مرز ورود اصلاح کن.

    تمرین پلکانی

    از ساده به چالشی، بدون پرش

    ۱ · گرم‌کردن

    یکی از مقدارهای مثال را عوض کن، خروجی را روی کاغذ حدس بزن و سپس بررسی کن.

    ۲ · تثبیت

    یکی از قیمت‌ها را به رشته «85,000» تبدیل کن و خطا یا نتیجه را ببین. سپس داده را در همان مرز ورود اصلاح کن.

    ۳ · ساختن

    سناریوی «جمع سبد خرید اشتباه است» را با نام‌های واضح‌تر و یک حالت تازه گسترش بده.

    دام‌های رایج

    این سه اشتباه را انجام نده

    1

    چند فایل را هم‌زمان تغییر می‌دهی.

    2

    از @ برای پنهان‌کردن هشدار استفاده می‌کنی.

    3

    در سایت اصلی display_errors را روشن می‌گذاری.

    آزمون پایان درس

    5 پرسش کوتاه؛ مطمئن شو واقعاً یاد گرفته‌ای

    برای هر پرسش یک پاسخ انتخاب کن. بعد از هر انتخاب، دلیل پاسخ را همان‌جا می‌بینی.

    پرسش 1 از 5

    اولین قدم مفید هنگام یک خطای تکرارپذیر چیست؟

    پرسش 2 از 5

    کدام توضیح، «بازتولید» را دقیق‌تر بیان می‌کند؟

    پرسش 3 از 5

    بهترین قدم بعد از خواندن مثال این درس چیست؟

    پرسش 4 از 5

    کدام روش نشان می‌دهد این درس را واقعاً فهمیده‌ای؟

    پرسش 5 از 5

    کدام رفتار احتمال خطا را در همین موضوع بیشتر می‌کند؟

    پایان درس 21

    درس را فقط وقتی تمام کن که کد را تغییر داده‌ای

    دیدن آموزش کافی نیست؛ یک مقدار را تغییر بده، خروجی را پیش‌بینی کن و بعد اجرا بزن.