PHP۱۲ درس رایگان

آموزش PHP از صفر با PHP 8.2 و تمرین در مرورگر

در این دوره خود زبان PHP را از اولین echo تا شیءگرایی، enum و استثناها یاد می‌گیرید. هر کد روی PHP 8.2 اجرا می‌شود و خروجی آن همان لحظه بررسی می‌شود.

  • PHP 8.2، با match، enum و readonly
  • اجرای کد در مرورگر، بدون نصب
  • درس‌های اول رایگان است
ببینید چه می‌سازید
درس
۱۶۸
تمرین
۱۴۰
ساعت آموزش
۳۴
پایان دوره
گواهی
نمونه: گزارش فروش هر شهر با توابع آرایه
index.phpگزارش فروش هر شهر با توابع آرایه
<?php
$sales = [
    ['city' => 'Tehran', 'product' => 'Laptop', 'amount' => 3],
    ['city' => 'Tabriz', 'product' => 'Phone', 'amount' => 5],
    ['city' => 'Tehran', 'product' => 'Phone', 'amount' => 2],
    ['city' => 'Shiraz', 'product' => 'Laptop', 'amount' => 1],
    ['city' => 'Tabriz', 'product' => 'Laptop', 'amount' => 2],
];
$prices = ['Laptop' => 42_000_000, 'Phone' => 18_500_000];
 
// به هر ردیف مبلغ فروش را اضافه می‌کنیم
$rows = array_map(
    fn($s) => $s + ['total' => $s['amount'] * $prices[$s['product']]],
    $sales
);
 
// جمع فروش هر شهر با array_reduce
$byCity = array_reduce($rows, function ($acc, $r) {
    $acc[$r['city']] = ($acc[$r['city']] ?? 0) + $r['total'];
    return $acc;
}, []);
arsort($byCity); // از بیشترین به کمترین، با حفظ کلیدها
 
foreach ($byCity as $city => $total) {
    echo str_pad($city, 8), str_pad(number_format($total), 14, ' ', STR_PAD_LEFT), "\n";
}
echo str_repeat('-', 22), "\n";
echo str_pad('Total', 8), str_pad(number_format(array_sum($byCity)), 14, ' ', STR_PAD_LEFT), "\n";
خروجی
Tabriz     176,500,000
Tehran     163,000,000
Shiraz      42,000,000
----------------------
Total      381,500,000

از فهرست فروش‌ها، مبلغ هر ردیف حساب می‌شود و فروش هر شهر جمع می‌خورد. نتیجه از بیشترین به کمترین مرتب و با جداکنندهٔ هزارگان چاپ می‌شود. نمونه‌های دیگر

آنچه یاد می‌گیرید

در این دوره چه چیزهایی یاد می‌گیرید

تمرکز دوره روی خود زبان است، با بیشترین درس برای آرایه‌ها و شیءگرایی.

  1. فصل ۱ و ۲

    اولین برنامه، متغیر و نوع

    با echo خروجی می‌سازید و نوع‌های PHP، تبدیل نوع و ثابت‌ها را می‌شناسید.

  2. فصل ۳

    عملگرها و دام مقایسه

    فرق == و === را با جدول مقایسه یاد می‌گیرید و از عملگر ?? و عملگر فضاپیما استفاده می‌کنید.

  3. فصل ۴ و ۵

    رشته‌ها و اعداد

    با درون‌یابی، heredoc، sprintf و explode متن می‌سازید، می‌فهمید چرا strlen برای فارسی بایت می‌شمارد و اعشار را درست گرد و مقایسه می‌کنید.

  4. فصل ۶

    کنترل جریان و match

    برنامه را با if، switch، match و حلقه‌های for، foreach و while هدایت می‌کنید.

  5. فصل ۷ و ۸

    آرایه‌ها

    آرایهٔ اندیسی و انجمنی می‌سازید و با array_map، array_filter، array_reduce، usort و توابع مجموعه‌ای گزارش می‌گیرید.

  6. فصل ۹ و ۱۰

    توابع و بستارها

    تابع نوع‌دار با مقدار پیش‌فرض، آرگومان نام‌دار و variadic می‌نویسید و از بستار، تابع پیکانی و callable استفاده می‌کنید.

  7. فصل ۱۱ و ۱۲ و ۱۳

    شیءگرایی

    کلاس، ارتقای سازنده، وراثت، کلاس انتزاعی، interface، trait، namespace و متدهای جادویی را به کار می‌برید.

  8. فصل ۱۴ و ۱۵ و ۱۶

    enum، استثنا و مولد

    حالت‌ها را با enum و کلاس readonly مدل می‌کنید، خطا را با استثنای سفارشی مدیریت می‌کنید و با yield داده را در لحظهٔ نیاز می‌سازید.

  9. فصل ۱۷ و ۱۸ و ۱۹ و ۲۰

    regex، JSON، تاریخ و سبک تابعی

    متن فارسی را با preg_match و پرچم u جست‌وجو می‌کنید، JSON می‌سازید و می‌خوانید، با DateTime کار می‌کنید و خط لولهٔ تابعی می‌نویسید.

  10. فصل ۲۱ و ۲۲ و ۲۳ و ۲۴

    دام‌های رایج و دو پروژهٔ پایانی

    دام‌های isset، empty و in_array را می‌شناسید و یک موتور محاسبهٔ عبارت و گزارش و یک سامانهٔ بانکی شیءگرا را از صفر می‌سازید.

نمونه‌کدها

نمونه‌هایی از کدهایی که می‌نویسید

این پنج نمونه را برای همین صفحه نوشته‌ایم. هر کدام روی همان PHP 8.2 درس‌ها اجرا شده و خروجی کنارش همان چیزی است که چاپ می‌کند.

PHP مدرن

PHP 8.2 چه فرقی با کدهای قدیمی PHP دارد

این دوره از ابتدا سبک امروزی PHP را یاد می‌دهد. ستون اول همان چیزی است که در کدهای قدیمی می‌بینید.

PHP 8.2 چه فرقی با کدهای قدیمی PHP دارد
موضوعکد قدیمی PHPPHP 8.2 در این دوره
انتخاب بین چند حالتswitch، که اگر break جا بماند به حالت بعد می‌رودmatch، که مقدار برمی‌گرداند و با === مقایسه می‌کند
مجموعهٔ ثابتی از حالت‌هاچند ثابت کلاسenum با from و tryFrom
سازندهٔ کلاستعریف هر پراپرتی و انتساب جداگانه در سازندهارتقای سازنده در چند خط
مقدار تغییرناپذیرفقط با قرار میان برنامه‌نویس‌هاپراپرتی و کلاس readonly
مقداری که ممکن است null باشدچند if تودرتوعملگر ?->
نوع پارامتر و خروجیاختیاری و محدودنوع‌های union، mixed، never و DNF
روش کار

یک درس چطور پیش می‌رود

  1. ۱

    صورت تمرین را می‌خوانید

    هر درس یک مفهوم را با مثال توضیح می‌دهد و یک کار مشخص از شما می‌خواهد.

  2. ۲

    کد را در مرورگر اجرا می‌کنید

    با دکمهٔ اجرا، کد شما روی PHP 8.2 اجرا می‌شود و خروجی یا پیام خطا را همان‌جا می‌بینید.

  3. ۳

    تست‌ها کارتان را می‌سنجند

    دکمهٔ بررسی، خروجی کد را با جواب درست مقایسه می‌کند. اگر گیر کردید، راهنمای همان تمرین قدم‌به‌قدم کمکتان می‌کند.

سرفصل‌ها

سرفصل‌های دوره

۲۴ سرفصل، ۱۶۸ درس، ۱۴۰ تمرین

۱

سلام پی‌اچ‌پی: مدلِ اجرا و قراردادِ خروجی

۷ درس
۲

متغیرها، نوع‌ها و ثابت‌ها

۶ درس
  • متغیرها و انتسابپیش‌نمایش رایگانتمرین
  • هشت نوعِ پی‌اچ‌پیپیش‌نمایش رایگان
  • gettype و get_debug_typeپیش‌نمایش رایگانتمرین
  • تبدیلِ نوع و خانواده‌ی intvalپیش‌نمایش رایگانتمرین
  • ثابت‌ها: const و defineپیش‌نمایش رایگانتمرین
  • is_* و بررسیِ نوعتمرین
۳

★ عملگرها، جادوی نوع و مقایسه

۷ درس
  • عملگرهای حسابی و intdivتمرین
  • الحاقِ رشته با نقطهتمرین
  • == در برابر === : قلبِ دام‌های پی‌اچ‌پی
  • جدولِ مقایسه‌ی شل و تغییرِ پی‌اچ‌پی ۸تمرین
  • صدق و کذب: جدولِ falsyتمرین
  • عملگرهای منطقی و ??تمرین
  • عملگرِ سه‌گانه و فضاپیماتمرین
۴

★ رشته‌ها و جعبه‌ابزارِ رشته

۱۲ درس
  • چهار سبکِ نوشتنِ رشته
  • درون‌یابیِ متغیرتمرین
  • heredoc و nowdocتمرین
  • دامِ بزرگ: strlen بایت می‌شمارد، نه کاراکتر
  • طول، اندیس و iconv_strlenتمرین
  • جست‌وجو: strpos و str_containsتمرین
  • برش و جایگزینیتمرین
  • حروف، trim و تکرار (دامِ ASCII)تمرین
  • explode و implodeتمرین
  • قالب‌بندی: sprintf و number_formatتمرین
  • ord، chr، strrev و ctype_*تمرین
  • گردشِ کد: ابزارِ slugifyتمرین
۵

اعداد و ریاضی

۶ درس
  • int، float و دامِ برابریِ اعشاری
  • round، ceil، floor، absتمرین
  • مقایسه‌ی اعشاری با epsilonتمرین
  • pow، sqrt، fmod و fdivتمرین
  • تبدیلِ مبنا و number_formatتمرین
  • NAN، INF و تقسیم بر صفرتمرین
۶

کنترلِ جریان، حلقه‌ها و match

۷ درس
  • if، elseif، else و عملگرِ سه‌گانهتمرین
  • switch و دامِ fallthrough
  • match: جایگزینِ مدرنِ switchتمرین
  • while و do-whileتمرین
  • for و foreachتمرین
  • break و continue با سطحتمرین
  • FizzBuzzتمرین
۷

★ آرایه‌ها I: ساختار و دسترسی

۸ درس
  • آرایه = نقشه‌ی مرتب
  • آرایه‌ی اندیسی و افزودن با []تمرین
  • آرایه‌ی انجمنی و درهم‌کشیِ کلیدتمرین
  • آرایه‌های تودرتو و چندبعدیتمرین
  • واکافت (destructuring) و جابه‌جاییتمرین
  • بازرسی: count، isset، in_arrayتمرین
  • دامِ ارجاع در foreach
  • اصلاحِ آرایه با foreach ارجاعیتمرین
۸

★ آرایه‌ها II: جعبه‌ابزارِ کامل

۱۲ درس
  • کلیدها، مقادیر، flip و combineتمرین
  • array_mapتمرین
  • array_filter و دامِ کلیدتمرین
  • array_reduceتمرین
  • برش و قطعه: slice، splice، chunkتمرین
  • array_merge در برابر عملگرِ +
  • ادغام و spreadتمرین
  • مرتب‌سازیِ ساده: sort، asort، ksortتمرین
  • usort با مقایسه‌گرِ سفارشیتمرین
  • عملیاتِ مجموعه‌ای: unique، diff، intersectتمرین
  • پشته، صف و تجمیعتمرین
  • گردشِ کد: گزارشِ گروه‌بندی‌شدهتمرین
۹

★ توابع

۷ درس
  • تعریف، پارامتر و بازگشتتمرین
  • اعلانِ نوع و strict_types
  • توابعِ نوع‌دارتمرین
  • مقدارِ پیش‌فرض و آرگومانِ متغیرتمرین
  • آرگومان‌های نام‌دار و spread در فراخوانیتمرین
  • پارامترِ ارجاعی و متغیرِ staticتمرین
  • نوع‌های union، mixed، never و voidتمرین
۱۰

★ بستارها، توابعِ پیکانی و callable

۶ درس
  • تابع به‌عنوانِ مقدار
  • بستار و use (مقدار در برابرِ ارجاع)تمرین
  • توابعِ پیکانی fn()تمرین
  • بستار به‌عنوانِ callback‌ِ آرایهتمرین
  • callable‌های دستِ‌اول f(...)تمرین
  • __invoke و Closure::bindتمرین
۱۱

★ شیءگرایی I: کلاس‌ها و اشیاء

۷ درس
  • چرا شیءگرایی؟
  • کلاس، new و متدتمرین
  • دیدپذیری: public، protected، privateتمرین
  • ارتقای سازنده (constructor promotion)تمرین
  • پراپرتیِ نوع‌دار و readonlyتمرین
  • پراپرتی و متدِ staticتمرین
  • ثابت‌های کلاس و cloneتمرین
۱۲

★ شیءگرایی II: وراثت، رابط، trait و فضای‌نام

۸ درس
  • وراثت و parentتمرین
  • کلاس‌های انتزاعیتمرین
  • رابط‌ها و چندریختی
  • پیاده‌سازیِ رابطتمرین
  • رابط‌های ازپیش‌تعریف‌شدهتمرین
  • trait و حلِ تعارضتمرین
  • فضاهای‌نام (namespace)تمرین
  • گردشِ کد: سلسله‌مراتبِ اشکالتمرین
۱۳

متدهای جادویی

۶ درس
  • متدهای جادویی چیستند؟
  • ‎__toString‎ و Stringableتمرین
  • ‎__get‎ و ‎__set‎تمرین
  • ‎__call‎ و ‎__callStatic‎تمرین
  • ‎__invoke‎: شیءِ صداپذیرتمرین
  • گردشِ کد: شیءِ مجموعه با ArrayAccessتمرین
۱۴

★ enum، readonly و نوع‌های مدرنِ ۸٫۲

۶ درس
  • چرا enum به‌جای ثابتِ کلاس؟
  • enumِ خالصتمرین
  • enumِ پشتیبان‌دار و from/tryFromتمرین
  • متد و رابط در enumتمرین
  • کلاسِ readonly و new در مقداردهیِ اولیهتمرین
  • نوع‌های DNF و standaloneِ ۸٫۲تمرین
۱۵

★ استثناها و مدیریتِ خطا

۶ درس
  • سلسله‌مراتبِ Throwable
  • try، catch، finallyتمرین
  • throw، catch‌ِ چندگانه و غیرگیرندهتمرین
  • تقسیم بر صفر و خطاهای داخلیتمرین
  • استثنای سفارشی و زنجیره‌سازیتمرین
  • اعتبارسنجیِ ورودی با استثناتمرین
۱۶

★ مولدها و ایترِیتورها

۶ درس
  • yield و ارزیابیِ تنبل
  • اولین مولدتمرین
  • yield key => value و yield fromتمرین
  • دنباله‌ی بی‌نهایتِ کرانه‌دارتمرین
  • ساختارهای SPLتمرین
  • Iterator و IteratorAggregateتمرین
۱۷

★ عباراتِ باقاعده (Regex)

۷ درس
  • regex چیست و چرا پرچمِ /u مهم است؟
  • preg_match و گروه‌هاتمرین
  • preg_match_all و ترتیب‌هاتمرین
  • preg_replace و callbackتمرین
  • preg_split و preg_quoteتمرین
  • گروه‌های نام‌دار و lookaroundتمرین
  • گردشِ کد: موتورِ قالبِ {{name}}تمرین
۱۸

JSON و شکل‌دهیِ داده

۶ درس
  • json_encode و فارسیتمرین
  • json_decode: آرایه در برابرِ شیءتمرین
  • JSON_THROW_ON_ERROR و JsonSerializableتمرین
  • اصطلاحِ «کدکردن برای ارزیابی»
  • خواننده و ادغام‌گرِ پیکربندیتمرین
  • ادغامِ عمیقِ پیکربندیتمرین
۱۹

تاریخ و زمان (مقادیرِ ثابت)

۶ درس
  • چرا فقط تاریخِ ثابت؟
  • ساخت و قالب‌بندیِ تاریختمرین
  • DateInterval و diffتمرین
  • افزودن و کاستنِ بازهتمرین
  • روزِ هفته و مشخصه‌های قالبتمرین
  • DatePeriod: پیمایشِ بازهتمرین
۲۰

پی‌اچ‌پیِ تابعی و ناوردایی

۶ درس
  • توابعِ خالص و ناوردایی
  • خطِ لوله‌ی تابعیتمرین
  • خطِ لوله‌ی CSV به JSONتمرین
  • ترکیبِ تابع (compose)تمرین
  • کتابخانه‌ی اعتبارسنجیتمرین
  • آمارِ متن (word frequency)تمرین
۲۱

پی‌اچ‌پیِ مدرنِ ۸ و مفهومِ attribute

۶ درس
  • عملگرِ امنِ پوچ ?->تمرین
  • str_contains و خانواده‌اشتمرین
  • attribute به‌عنوانِ مفهوم
  • جمع‌بندیِ اصطلاحاتِ مدرنتمرین
  • دیسپچرِ فرمان (بدونِ HTTP)تمرین
  • گردشِ کد: رویداددهنده (EventDispatcher)تمرین
۲۲

★ دام‌ها و اصطلاحاتِ حرفه‌ای

۶ درس
  • نقشه‌ی دام‌ها
  • isset، empty، ?? و array_key_existsتمرین
  • کپی‌-هنگام‌نوشتن در برابرِ ارجاعتمرین
  • دامِ in_array شل در برابرِ سختتمرین
  • این باگ را پیدا کنتمرین
  • تصادفیِ قطعی با mt_srand(0)تمرین
۲۳

پروژه‌ی واقعی I: موتورِ عبارت و گزارش

۷ درس
  • نقشه‌ی پروژه و قراردادِ قطعی‌بودن
  • توکن‌ساز (tokenizer)تمرین
  • ارزیابِ RPN با SplStackتمرین
  • تبدیلِ میان‌وند به RPN (shunting-yard)تمرین
  • پارسِ CSVتمرین
  • گزارشِ تجمیعیتمرین
  • سیم‌کشیِ نهایی با حلقه‌ی stdinتمرین
۲۴

پروژه‌ی واقعی II: سامانه‌ی بانک/موجودیِ شیءگرا

۷ درس
  • نقشه‌ی پروژه‌ی شیءگرا
  • enum و شیءِ مقدار (value object)تمرین
  • سلسله‌مراتبِ استثنای سفارشیتمرین
  • مخزنِ درون‌حافظه‌ای (repository)تمرین
  • منطقِ سرویس با تضمینِ ناورداتمرین
  • گزارش‌گیری و عکسِ‌فوریِ JSONتمرین
  • سیم‌کشیِ نهایی با دیسپچرِ stdinتمرین
شروع دوره

از همین امروز شروع کنید

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

این دوره شامل:
  • ۱۶۸ درس تعاملی
  • ۱۴۰ تمرین عملی
  • ۳۴ ساعت محتوای آموزشی
  • اجرای کد در مرورگر، بدون نصب
  • گواهی پایان دوره
  • دسترسی مادام‌العمر

نمونه‌ها را دوباره ببینید

رایگانبرای شروع

۱۲ درس ابتدایی رایگان است. برای ادامه، اشتراک بگیرید یا دوره را بخرید.

بدون نیاز به پرداخت مبلغی برای شروع

برای چه کسی

این دوره برای چه کسی است

  • تازه‌کار

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

  • کسی که با PHP کار کرده اما پایه ندارد

    اگر تا امروز کد PHP را از جایی کپی کرده‌اید و می‌خواهید خود زبان را درست یاد بگیرید.

  • توسعه‌دهندهٔ وردپرس یا لاراول

    اگر می‌خواهید کدی را که هر روز با آن کار می‌کنید عمیق‌تر بفهمید.

پیش‌نیاز: یک رایانه و یک مرورگر.

بعد از این دوره

پرسش‌ها

پرسش‌های پرتکرار

PHP هنوز ارزش یادگیری دارد؟
بله. بخش بزرگی از وب با PHP کار می‌کند، از جمله وردپرس، و فریم‌ورک‌هایی مثل لاراول و سیمفونی با آن نوشته شده‌اند. نسخه‌های ۸ به بعد هم زبان را با نوع‌ها، enum و match مدرن کرده‌اند.
این دوره لاراول یا وردپرس را آموزش می‌دهد؟
نه. این دوره خود زبان PHP را آموزش می‌دهد. لاراول، سیمفونی و وردپرس همه روی همین زبان ساخته شده‌اند، پس بعد از این دوره یادگیری آن‌ها آسان‌تر است.
کار با فرم و پایگاه داده هم در دوره هست؟
نه. فرم، سشن، کوکی، پایگاه داده و Composer در این دوره نیستند و تمرین‌ها روی خط فرمان PHP اجرا می‌شوند. برای پایگاه داده، بعد از این دوره «پایگاه داده و SQL» را بخوانید.
برای شروع باید برنامه‌نویسی بلد باشم؟
نه. دوره از اولین echo شروع می‌شود و هر مفهوم را با یک تمرین کوچک یاد می‌دهد.
باید PHP یا XAMPP نصب کنم؟
نه. کد را در مرورگر می‌نویسید و روی PHP 8.2 اجرا می‌شود. اگر بعداً PHP را روی رایانه نصب کنید، همین کدها با دستور php اجرا می‌شوند.
چند درس این دوره رایگان است؟
درس‌های ابتدایی دوره رایگان است و برای شروع پرداختی لازم نیست. تعداد دقیق آن‌ها کنار دکمهٔ شروع نوشته شده است.
در پایان دوره گواهی می‌گیرم؟
بله. وقتی همهٔ درس‌ها را تمام کنید، گواهی پایان دوره با یک شمارهٔ استعلام صادر می‌شود که درستی آن در سایت قابل بررسی است.

همین امروز شروع کنید

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

آموزش PHP از صفر تا برنامه‌نویس — دینا کد