دوره آموزش جامع PHP از صفر تا صد با پروژههای عملی
دوره آموزش جامع PHP از صفر تا صد با پروژههای عملی، یک برنامه آموزشی کامل و رایگان است که به شما کمک میکند تا مهارتهای برنامهنویسی PHP را از مبتدی تا حرفهای فرا بگیرید. این دوره شامل مباحث پایهای تا پیشرفته PHP، طراحی و توسعه وب، و انجام پروژههای عملی برای تقویت مهارتهای شماست. با شرکت در این دوره، میتوانید به سادگی وبسایتهای داینامیک و اپلیکیشنهای تحت وب حرفهای را ایجاد کنید و به یک توسعهدهنده حرفهای PHP تبدیل شوید.
سرفصل های دوره
برای مشاهده ویدیوها ابتدا دکمه شرکت در دوره را بزنید
فصل اول: آشنایی با PHP و مبانی آن
در این جلسه به معرفی این زبان میپردازیم ، php چیست ؟ چه مزیت هایی نسبت به بقیه زبان ها دارد ؟ حوزه تخصصی آن کجاست ؟ مفهوم زبان برنامه نویسی client-side یا server-side چیست و چه تفاوت هایی با هم دارند .
در این بخش، با نحوه استفاده از تگهای PHP در سند HTML آشنا میشویم و همچنین روشهای چاپ خروجی و کامنتگذاری در PHP را بررسی میکنیم.
متغیرها در PHP برای ذخیره دادهها و اطلاعات استفاده میشوند. در این بخش با نحوه تعریف، مقداردهی و استفاده از متغیرها در PHP آشنا میشویم.
PHP دارای انواع دادههای متنوعی است که برای ذخیره و مدیریت اطلاعات استفاده میشوند. در این بخش با انواع دادههای اصلی در PHP و نحوه استفاده از آنها آشنا میشویم.
الحاق رشتهها در PHP به معنی ترکیب دو یا چند رشته به یک رشته جدید است. در PHP، عملگر "." برای الحاق رشتهها استفاده میشود.
در PHP، متغیرها نوع داده خاصی ندارند و به طور خودکار بسته به محتوای آنها، نوعشان تعیین میشود. این ویژگی به عنوان نوعگذاری خودکار (Type Juggling) شناخته میشود. با این حال، در برخی موارد، ممکن است بخواهید نوع یک متغیر را به طور صریح تغییر دهید که به آن نوعگذاری (Type Casting) میگویند.
PHP شامل مجموعهای از عملگرهای ریاضی و توابعی است که برای انجام محاسبات ریاضی و عملیاتهای مختلف بر روی اعداد استفاده میشوند. در این بخش، به بررسی عملگرهای ریاضی و توابع مربوطه در PHP میپردازیم.
PHP دارای مجموعهای از توابع قدرتمند برای کار با رشتهها است. این توابع به شما امکان میدهند تا عملیات مختلفی مانند جستجو، جایگزینی، تغییر طول و قالببندی رشتهها را انجام دهید. در این بخش، برخی از توابع پرکاربرد رشتهای در PHP را بررسی میکنیم.
PHP مجموعهای از توابع و کلاسها را برای کار با تاریخ و زمان فراهم میکند. این امکانات به شما امکان میدهد تا عملیات مختلفی مانند دریافت تاریخ و زمان فعلی، فرمتدهی تاریخ و زمان، محاسبات مربوط به تاریخ و زمان و ... را انجام دهید.
فصل دوم: کار با آرایه ها در PHP
آرایهها در PHP یک ساختار دادهای قدرتمند هستند که به شما امکان میدهند تا مجموعهای از مقادیر را در یک متغیر ذخیره کنید. آرایهها میتوانند شامل انواع دادههای مختلفی مانند اعداد، رشتهها، و حتی سایر آرایهها باشند. در این بخش با انواع آرایهها و نحوه کار با آنها در PHP آشنا میشویم.
PHP دارای مجموعهای از توابع داخلی برای کار با آرایهها است که به شما امکان میدهد عملیات مختلفی مانند مرتبسازی، جستجو، تغییر و ترکیب آرایهها را انجام دهید. در این بخش، برخی از توابع پرکاربرد آرایهها در PHP را بررسی میکنیم.
آرایههای انجمنی در PHP به شما امکان میدهند که مقادیر را به صورت کلید-مقدار (key-value) ذخیره کنید. در این نوع آرایهها، به جای استفاده از اندیسهای عددی، از کلیدهای رشتهای برای دسترسی به مقادیر استفاده میشود. این ویژگی باعث میشود که آرایههای انجمنی برای ذخیرهسازی و دسترسی به دادهها به صورت معنایی و قابل فهم، بسیار مناسب باشند.
آرایههای چندبعدی در PHP به شما امکان میدهند تا آرایههایی داشته باشید که شامل آرایههای دیگر هستند. این نوع آرایهها برای ذخیرهسازی دادههای پیچیدهتر و ساختارمند بسیار مفید هستند. در این بخش، نحوه تعریف، دسترسی و کار با آرایههای چندبعدی را بررسی میکنیم.
فصل سوم: کار با حلقه ها در PHP
حلقهها در PHP به شما امکان میدهند تا مجموعهای از دستورات را چندین بار اجرا کنید. PHP از چند نوع حلقه پشتیبانی میکند که هر کدام برای کاربردهای مختلف مناسب هستند. در این بخش با انواع حلقههای پایه در PHP آشنا میشویم.
حلقههای تو در تو در PHP ابزارهای قدرتمندی برای کار با دادههای چند بعدی و پیچیده فراهم میکنند. با استفاده از این نوع حلقهها میتوانید به راحتی در آرایههای چند بعدی پیمایش کنید و عملیاتهای پیچیدهتری را انجام دهید. توجه داشته باشید که استفاده بیرویه از حلقههای تو در تو میتواند باعث پیچیدگی و کاهش کارایی کد شما شود، بنابراین باید بهینه و با دقت از آنها استفاده کنید.
پیمایش آرایهها یکی از عملیاتهای رایج در برنامهنویسی است که برای دسترسی به مقادیر هر عنصر آرایه و انجام عملیاتهای مختلف بر روی آنها استفاده میشود. در PHP، میتوانید از انواع مختلف حلقهها برای پیمایش آرایهها استفاده کنید. در این بخش، به بررسی نحوه پیمایش آرایهها با استفاده از حلقههای for، while، و foreach میپردازیم.
پیمایش آرایههای چندبعدی در PHP نیازمند استفاده از حلقههای تو در تو است. شما میتوانید از حلقههای foreach یا for برای پیمایش این آرایهها استفاده کنید. با این روشها، به راحتی میتوانید به دادههای موجود در آرایههای چندبعدی دسترسی پیدا کنید و عملیات مختلفی را بر روی آنها انجام دهید.
فصل چهارم: ساختارهای شرطی در PHP
عملگرهای مقایسهای و منطقی در PHP برای انجام عملیات مقایسه و ترکیب شرایط استفاده میشوند. این عملگرها به شما امکان میدهند تا شرایط پیچیده را بررسی کرده و تصمیمگیریهای منطقی را در برنامههای خود پیادهسازی کنید.
عملگر Null Coalescing (??) در PHP برای بررسی وجود مقدار غیر تهی (null) یک متغیر استفاده میشود. این عملگر زمانی مفید است که بخواهید یک متغیر را بررسی کنید و اگر آن متغیر مقدار تهی داشت، یک مقدار پیشفرض را به جای آن استفاده کنید.
دستورهای شرطی if در PHP برای اجرای کدی استفاده میشوند که بر اساس شرایط مشخصی اجرا شوند. این دستورها به شما امکان میدهند تا کنترل بیشتری بر جریان اجرای برنامه داشته باشید. در این بخش، به بررسی جزئیات و نحوه استفاده از شرطهای if، else, elseif و شرطهای تو در تو در PHP میپردازیم.
با استفاده از PHP میتوان بر اساس شرایط مختلف، خروجی HTML تولید کرد. این قابلیت به شما امکان میدهد تا صفحات وب داینامیک و متناسب با نیازهای مختلف ایجاد کنید. در این بخش، نحوه استفاده از دستورهای شرطی if، else, elseif و switch برای تولید خروجی HTML را بررسی میکنیم.
در PHP، شما میتوانید از دستورات شرطی داخل حلقهها استفاده کنید تا جریان اجرای برنامه را بر اساس شرایط مشخص کنترل کنید. دستورات break و continue دو ابزار قدرتمند برای کنترل جریان حلقهها هستند. در این بخش، نحوه استفاده از این دستورات را در کنار دستورات شرطی بررسی میکنیم.
در این قسمت با توجه به لیست داینامیکی که از آگهی ها ساخته ایم، میخواهیم با استفاده از Loop ها و Condition هایی که تا اینجای آموزش ها یادگرفته ایم حالت های خاصی را ایجاد کنیم.
دستور switch در PHP برای بررسی و انجام عملیات مختلف بر اساس مقادیر مختلف یک متغیر استفاده میشود. این دستور به شما امکان میدهد که بر اساس مقدار های مختلف یک متغیر، برای هر مقدار مشخص، کد متفاوتی را اجرا کنید. به طور کلی، دستور switch یک روش ساختاریافته و خوانا برای مدیریت تصمیمگیریهای چندگانه است.
عملگر شرطی یا ternary operator در PHP یک روش کوتاهتر و خواناتر برای نوشتن عبارات شرطی if-else ساده است. این عملگر سه قسمت دارد: شرط، نتیجه در صورت برقرار بودن شرط، و نتیجه در صورت نادرست بودن شرط.
فصل پنجم: توابع در PHP
توابع در PHP میتوانند مقادیر را به عنوان نتیجه بازگردانند. این قابلیت به شما امکان میدهد تا عملیات مختلفی را در یک تابع انجام داده و نتیجه را برای استفاده در جای دیگر کد بازگردانید. در این بخش، نحوه تعریف توابع با مقادیر بازگشتی و استفاده از آنها را بررسی میکنیم.
پارامترها و آرگومانها در توابع PHP به شما امکان میدهند تا مقادیر را به توابع ارسال کرده و با استفاده از این مقادیر عملیاتهای مختلفی را انجام دهید. در این بخش، نحوه تعریف پارامترها و ارسال آرگومانها به توابع را بررسی میکنیم.
محدوده متغیرها در PHP تعیین میکند که کجا و چگونه میتوان به یک متغیر دسترسی داشت. PHP دارای دو نوع محدوده اصلی برای متغیرها است: محلی (Local) و سراسری (Global). در این بخش، به بررسی این دو نوع محدوده و نحوه استفاده از آنها میپردازیم.
ثابتها در PHP مقادیر ثابتی هستند که پس از تعریف، مقدارشان تغییر نمیکند. ثابتها برای نگهداری مقادیری استفاده میشوند که در طول اجرای برنامه تغییر نمیکنند. در PHP، ثابتها میتوانند حاوی مقادیر رشتهای، عددی، یا مقادیر منطقی باشند. ثابتها معمولاً برای نگهداری اطلاعاتی مانند تنظیمات پیکربندی، نسخههای نرمافزار و غیره استفاده میشوند.
دستور declare در PHP برای تنظیمات مختلف اسکریپت PHP استفاده میشودو استفاده از آن اختیاری است. این دستور معمولاً برای فعال کردن حالت سختگیرانه نوعها (strict_types) استفاده میشود، اما کاربردهای دیگری نیز دارد. در این بخش، به بررسی انواع مختلف دستور declare و نحوه استفاده از آنها میپردازیم.
در این قسمت با توجه به مفاهیمی که تا اینجای آموزش در مورد توابع آموخته ایم به سراغ لیست آگهی ها میرویم و توابع کمکی را برای آن تعریف میکنیم.
در این بخش به دنبال قسمت قبلی، به نوشتن تابعی برای بدست آوردن میانگین حقوق دریافتی کل آگهی می پردازیم و نتیحه را درون لیست مورد نظر نمایش میدهیم.
در این قسمت با توابع ناشناس (Anonymous Functions) و closures آشنا میشویم و کاربرد آنهارا بررسی میکنیم.این قابلیتها به شما امکان میدهند تا توابع بدون نام ایجاد کنید و آنها را به عنوان متغیرها، پارامترها یا مقادیر بازگشتی استفاده کنید.
توابع Callback (بازگشتی) در PHP توابعی هستند که به عنوان آرگومان به توابع دیگر پاس داده میشوند.این قابلیت به شما این امکان را میدهد تا رفتار توابع را به صورت پویا تعیین کنید. توابع Callback میتوانند توابع ناشناس، نامدار یا متدهای کلاسها باشند.
توابع پیکانی یا Arrow Functions از PHP 7.4 معرفی شدهاند. این توابع نسخه مختصری از توابع ناشناس هستند که به صورت سادهتری نوشته میشوند و به ویژه برای مواردی که توابع کوتاهی نیاز است، بسیار مفید هستند. در این بخش ساختار و نحوه تعریف آنها را می آموزیم.
در این بخش به تکمیل تمرین آگهی ها میپردازیم و توابع را با استفاده از Arrow Functions تعریف میکنیم.
فصل ششم: برنامهنویسی شیءگرا (OOP) در PHP
در این بخش به معرفی برنامه نویسی شئ گرا و تفاوت آن میپردازیم.برنامهنویسی شیءگرا (Object-Oriented Programming یا OOP) یک پارادایم برنامهنویسی است که بر اساس مفاهیم اشیاء (objects) و کلاسها (classes) بنا شده است. این پارادایم به شما امکان میدهد که کدهای خود را به صورت سازمانیافتهتر و قابل نگهداریتر بنویسید.
در PHP، یک کلاس قالبی برای ایجاد اشیاء است که میتواند شامل پراپرتی(متغیرها) و متدها (توابع) باشد. در این بخش، نحوه ایجاد یک کلاس، تعریف پراپرتی ها و متدها و استفاده از آنها را بررسی میکنیم.
در PHP، میتوانید از دسترسیکنندهها (Access Modifiers) برای کنترل دسترسی به پروپرتیها و متدهای کلاس استفاده کنید. همچنین میتوانید با استفاده از متدهای گیرنده (Getter) و تنظیمکننده (Setter) به پروپرتیهای خصوصی کلاس دسترسی داشته باشید و آنها را تغییر دهید. در این بخش، نحوه استفاده از این مفاهیم را بررسی میکنیم.
ارثبری یکی از مفاهیم اساسی در برنامهنویسی شیءگرا (OOP) است که به شما اجازه میدهد تا یک کلاس، ویژگیها و رفتارهای یک کلاس دیگر را به ارث ببرد. با استفاده از ارثبری، میتوانید کلاسهای جدید را، بدون نیاز به نوشتن مجدد کدهای مشترک، بر اساس کلاسهای موجود ایجاد کنید، .
در PHP، متدهای ایستا (Static Methods) متدهایی هستند که به یک شیء خاص تعلق ندارند و مستقیماً از طریق کلاس خود فراخوانی میشوند. این متدها معمولاً برای توابعی استفاده میشوند که نیازی به دسترسی به پراپرتیها و متدهای غیرایستا یک شیء ندارند.
کلاسهای انتزاعی (Abstract Classes) در PHP کلاسهایی هستند که نمیتوان مستقیماً از آنها نمونهسازی کرد. این کلاسها برای ایجاد پایهای برای سایر کلاسها استفاده میشوند و میتوانند شامل متدهای انتزاعی و متدهای عادی باشند. در این قسمت به بررسی ویژگی های کلاس های انتزاعی میپردازیم.
اینترفیسها (Interfaces) در PHP نوعی قرارداد برای کلاسها هستند که مشخص میکنند چه متدهایی باید توسط کلاس پیادهسازی شوند. در این قسمت به چرایی به وجود آمدن ، نحوه استفاده و همچنین تفاوت آنها با کلاس های انتزاعی را بیان خواهیم نمود .
فصل هفتم: متغیرهای سوپرگلوبال
متغیرهای سوپرگلوبال در PHP مجموعهای از آرایهها و متغیرهای پیشساخته هستند که در هر نقطه از اسکریپت PHP قابل دسترسی میباشند. این متغیرها به شما امکان میدهند که به اطلاعات مهمی مانند دادههای ورودی کاربر، کوکیها، اطلاعات سرور و موارد دیگر دسترسی پیدا کنید.
متغیر سوپرگلوبال $_SERVER یک آرایه در PHP است که حاوی اطلاعات و جزئیات مربوط به سرور و محیط اجرای اسکریپت است. این متغیر اطلاعات مفیدی در مورد مسیرها، سرور، پروتکلها و درخواستهای کاربر ارائه میدهد.
در این قسمت به معرفی متغیر سوپرگلوبال ENV زبان PHP میپردازیم و اطلاعاتی که از سمت ما درون خودش ذخیره میکند را بررسی میکنیم. متغیر سوپرگلوبال $_ENV در PHP یک آرایه انجمنی (Associative Array) است که شامل اطلاعات مربوط به متغیرهای محیطی (Environment Variables) است. این متغیرها میتوانند شامل اطلاعات مختلفی مانند مسیرها، تنظیمات سرور، اطلاعات مربوط به سیستم عامل و غیره باشند.
در این قسمت به معرفی متغیر سوپرگلوبال GET در PHP و معرفی پارامترهای کوئری (Query Parameters) میپردازیم و سینتکس آنها درون URL را بررسی میکنیم .
در این قسمت به معرفی متغیر سوپرگلوبال POST و ارسال داده ها از طریق آن در PHP میپردازیم و تفاوت بین متغیر سوپرگلوبال GET و POST در ارسال داده های یک فرم بررسی میکنیم .متغیر سوپرگلوبال $_POST در PHP یک آرایه انجمنی (Associative Array) است که شامل دادههایی است که از طریق درخواستهای HTTP POST به سرور ارسال میشوند.
در این قسمت به معرفی متغیر سوپرگلوبال FILES و بارگذاری فایل در PHP میپردازیم ، و نحوه بارگذاری فایل ها را در PHP بررسی میکنیم.
در این قسمت به ایجاد پیغام های خطا و نمایش آنها در درخواست های PHP میپردازیم و نحوه مدیریت خطاها را بررسی خواهیم کرد.
در این قسمت به معرفی متغیر سوپرگلوبال $_SESSION در زبان PHP میپردازیم و نحوه ایجاد و ذخیره سازی آن را باهم بررسی میکنیم . متغیر سوپرگلوبال $_SESSION در PHP برای ذخیره اطلاعات کاربر به صورت سراسری (global) در تمام صفحات یک وبسایت استفاده میشود. این متغیر به شما امکان میدهد که اطلاعات کاربران را در طول جلسه (session) ذخیره و بازیابی کنید.
فصل هشتم: کار با دیتابیس در PHP
در این قسمت به معرفی دیتابیس، کاربرد و انواع آن میپردازیم و در نهایت بررسی میکنیم که در در زبان PHP میتوانیم از چه نوع دیتابیس هایی استفاده کنیم.
در این قسمت به نحوه نصب دیتابیس MYSQL در محیط ویندوز و چگونگی استفاده از آن میپردازیم .
در این قسمت به دستورات ساده ای در MySQL و نحوه استفاده از آن در محیط Command Prompt ویندوز را بررسی میکنیم و نزدیکی دستورات این زبان به زبان انسان را مشاهده میکنیم.
MySQL Workbench یکی از محبوبترین و قدرتمندترین ابزارهای GUI (Graphical User Interface) برای مدیریت و طراحی دیتابیسهای MySQL است. این ابزار توسط Oracle توسعه داده شده و به طور گستردهای توسط توسعهدهندگان و مدیران دیتابیس استفاده میشود.در این قسمت به معرفی Workbench های MySQL برخی از قابلیتهای آن میپردازیم ونحوه سهولت استفاده از آنها را برای ایجاد دستورات MySQL را بررسی میکنیم.
در این قسمت معرفی کلاس PDO در زبان PHP میپردازیم تا با استفاده از آن بتوانیم از حملاتی مانند SQL Injection در درون دیتابیس خود جلوگیری کنیم، در ادامه نحوه ایجاد و سه متد اصلی و استفاده از آنها را بررسی میکنیم.PDO (PHP Data Objects) یک لایه انتزاعی دسترسی به دادهها در PHP است که به شما امکان میدهد به انواع مختلف دیتابیسها از جمله MySQL متصل شوید.
با استفاده از PDO، میتوانید چندین رکورد را از یک دیتابیس واکشی کنید و نتایج را به صورتهای مختلفی دریافت کنید. در این بخش، به نحوه دریافت چندین رکورد از دیتابیس با استفاده از PDO میپردازیم.
با استفاده از PDO، میتوانید یک رکورد را از دیتابیس واکشی کنید. این کار معمولاً در مواقعی انجام میشود که میدانید کوئری شما حداکثر یک نتیجه برمیگرداند، مثلاً هنگام جستجوی یک کاربر با شناسهی منحصربهفرد.
در این بخش، به نحوه ایجاد یک فرم HTML برای دریافت اطلاعات کاربر و درج این اطلاعات در دیتابیس MySQL با استفاده از PHP و PDO میپردازیم.
حذف رکوردها از دیتابیس یکی از عملیاتهای رایج در مدیریت دیتابیسها است. در این قسمت به حذف یک رکورد در دیتابیس توسط کلاس PDO در PHP میپردازیم .
بروزرسانی رکوردها در دیتابیس یکی از عملیاتهای رایج در مدیریت دادهها است. در این قسمت به بروزرسانی یک رکورد در دیتابیس توسط کلاس PDO در PHP میپردازیم .
فصل نهم: اجرای مفاهیم پایه در قالب یک پروژه واقعی
در این قسمت از آموزش، به پیادهسازی مفاهیم یادگرفتهشده در قالب یک پروژه واقعی و عملی میپردازیم. برای مثال، میتوانیم یک سایت مشابه آپارات پیادهسازی کنیم که قابلیتهای پایهای مانند ثبتنام کاربر، ورود، آپلود و مدیریت ویدیوها، نمایش لیست ویدیوها و حذف یا بهروزرسانی اطلاعات را شامل میشود.
در این پروژه، ما قصد داریم یک سایت مشابه آپارات ایجاد کنیم که شامل قابلیتهایی مانند ثبتنام کاربران، ورود کاربران، آپلود ویدیوها، نمایش لیست ویدیوها، امتیاز دهی و نظرات و سایر ویژگی ها باشد. تمامی مراحل این پروژه در Repository گیت هاب قرار داده میشود و به مهارت شما در استفاده از گیت کمک میکند. این پروژه به شما کمک میکند تا مفاهیم پایهای که در بخشهای قبلی یاد گرفتید را در یک پروژه واقعی به کار ببرید.
در این بخش، قصد داریم یک پروژه PHP ایجاد کنیم، یک ریپوزیتوری در GitHub بسازیم و قالب دانلود شده را برای سایت بارگذاری کنیم. سپس، تنظیمات Document Root را انجام داده و فایلهای پروژه را آپلود میکنیم.
یکی از بهترین شیوههای توسعه وب، استفاده از partial views برای جداسازی قسمتهای مختلف رابط کاربری (UI) است. این روش باعث میشود که کد HTML سازماندهی شدهتر، قابلفهمتر و قابلنگهداریتر باشد. همچنین، با این روش میتوانیم قسمتهای مشترک در صفحات مختلف را تنها یکبار تعریف و در صورت نیاز بهروز کنیم.
در فرآیند توسعه وب، دیباگ کردن و مشاهدهی مقادیر متغیرها و نتایج بازگشتی آنان بسیار مهم است. دو تابع inspect و dd (مخفف dump and die) برای این منظور میتوانند بسیار مفید باشند. این توابع به توسعهدهندگان امکان میدهند تا به راحتی مقادیر متغیرها را چاپ کنند و در صورت نیاز اجرای اسکریپت را متوقف کنند.
برای داشتن یک پروژه سازماندهی شده و قابل نگهداری، بهترین روش جداسازی منطق (logic) از نمایش (view) است. این جداسازی باعث میشود کدها خواناتر، قابل فهمتر و نگهداری آنها سادهتر باشد. در این قسمت به جداسازی قسمتهای منطقی یا logic کد از قسمتهای View ها در PHP میپردازیم و کم کم به سمت ایجاد ساختمانی برای قسمت های مختلف کدهامون میرویم و در نهایت ویوهای سمت کاربر را ایجاد میکنیم.
پنل ادمین به مدیران سایت اجازه میدهد تا ویدیوها و کاربران را مدیریت کنند. ساختاردهی پروژه و ایجاد view های سمت پنل ادمین از اهداف اصلی این بخش است.
در این قسمت، قصد داریم روتها را از فایل index.php جدا کرده و به فایلهای مجزا منتقل کنیم. این روش باعث سازماندهی بهتر و خوانایی بیشتر کدها میشود. همچنین به بررسی URI ها و نحوه سازماندهی آنها میپردازیم.
در این بخش، فایل router.php را به یک کلاس تبدیل میکنیم تا به یک ساختار مناسب برای مدیریت روتهای پروژه دست یابیم. این کلاس به ما کمک میکند تا به راحتی روتهای جدید اضافه کنیم و ساختار پروژه را بهبود بخشیم.
در این بخش، به معرفی دیتابیسهای رابطهای، نحوه استفاده از آنها در PHP، و روابط بین جداول میپردازیم. در نهایت، ساختمان پروژه خود را در MySQL Workbench معرفی میکنیم.
در این بخش، به ایجاد دیتابیس پروژه خود در محیط MySQL Workbench میپردازیم. ساختمان جداول خود را ایجاد میکنیم و روابط بین آنها را بررسی میکنیم. MySQL Workbench یک ابزار گرافیکی قدرتمند برای مدیریت دیتابیسهای MySQL است و به ما امکان میدهد که جداول و روابط بین آنها را به راحتی ایجاد و مدیریت کنیم.
برای مدیریت بهتر ارتباط با دیتابیس و انجام عملیات مختلف روی دیتابیس، میتوانیم یک کلاس Database ایجاد کنیم. این کلاس شامل متدهایی برای اتصال به دیتابیس، انجام کوئریها و مدیریت ارتباطات است.
در این بخش، متد query را در کلاس Database معرفی و ایجاد میکنیم تا بتوانیم درخواستهای خود را اجرایی کنیم. سپس، اولین کوئری خود را برای دریافت کلیه دستهبندیها از جدول categories پیادهسازی میکنیم.
در این بخش، به ایجاد لیستی برای نمایش دستهبندیهای دریافت شده از سمت دیتابیس میپردازیم و با تکنولوژی AJAX آشنا میشویم. AJAX به ما امکان میدهد تا بدون بارگذاری مجدد صفحه، دادهها را از سرور دریافت و در صفحه نمایش دهیم.
در این بخش، به ایجاد دستهبندی جدید و ثبت آن در دیتابیس با استفاده از تکنولوژی AJAX و همچنین ارتباط با کلاس Database در محیط کنترلر خود میپردازیم.
برای نمایش اطلاعات به دست آمده از دیتابیس به کاربر، باید این اطلاعات را از کنترلر به ویو (View) ارسال کنیم. این کار به ما امکان میدهد که دادهها را در محیط ویو نمایش دهیم و تجربه کاربری بهتری ارائه دهیم.
در این بخش، به معرفی و پیادهسازی بهروزرسانی اطلاعات دستهبندیها با استفاده از تکنولوژی AJAX میپردازیم.همانطور که گفته شد AJAX به ما امکان میدهد که بدون بارگذاری مجدد صفحه، دادهها را به سرور ارسال و پاسخها را دریافت کنیم.
فصل دهم: تکمیل پروژه با تمرکز بر شئ گرایی
با جداسازی بخشهای مختلف پروژه و سازماندهی آنها، به نقطهای رسیدهایم که میتوانیم فریمورک خود را در PHP ایجاد کنیم. هدف از ایجاد یک فریمورک، سازماندهی بهتر، کد تمیزتر و قابلیت نگهداری بالاتر است. در این بخش، به ساختار پوشهها و سازماندهی قسمتهای مختلف فریمورک خود میپردازیم.
تابع ()spl_autoload_register در PHP به شما امکان میدهد تا به جای استفاده مستقیم از require یا include برای هر کلاس، از autoloader استفاده کنید. این روش به شما کمک میکند تا کد خود را تمیزتر و سازمانیافتهتر نگه دارید و به مفهوم اتو لودینگ (Autoloading) در PHP آشنا شوید.
Composer یک ابزار مدیریت وابستگی (Dependency Manager) در PHP است که به شما امکان میدهد تا کتابخانهها و پکیجهای مختلف را به پروژه خود اضافه کرده و به راحتی آنها را مدیریت کنید. استفاده از استاندارد PSR-4 در کنار Composer به شما کمک میکند تا از اتو لودینگ (Autoloading) برای کلاسها به صورت استاندارد و سازمانیافته استفاده کنید.
در این بخش، به بهینهسازی کدهای کلاس Router میپردازیم تا بتوانیم کنترلرهای خود را به عنوان کلاسهای جداگانه در نظر بگیریم و از ایجاد صفحات مختلف برای درخواستهای خود پرهیز کنیم. هدف این است که کدها تمیزتر، قابل نگهداریتر و مقیاسپذیرتر شوند.
در این بخش، به بهینهسازی لیست روتها برای ارسال هر کدام از روتها به کلاس کنترلر متناظر با خود میپردازیم. این کار به ما امکان میدهد تا از کدهای تمیزتر و سازمانیافتهتری برخوردار باشیم و همچنین مسیریابی و کنترل درخواستها را سادهتر کنیم.
در این بخش، به بهینهسازی کنترلرهای پروژه میپردازیم. هدف این است که کنترلرهای خام PHP را به کلاسهای منحصر به فرد تبدیل کنیم و از اصول شیگرایی در آنها استفاده کنیم. همچنین، متدهای مختلفی را برای مدیریت دستهبندیها ایجاد خواهیم کرد.
در این بخش، به ایجاد کلاس ErrorController برای مدیریت ارورهای سیستمی و همچنین تکمیل عملیات CRUD با اضافه کردن متد delete به CategoryController میپردازیم. این کار به ما کمک میکند تا خطاهای سیستمی را بهتر مدیریت کنیم و عملیات حذف دستهبندیها را نیز پیادهسازی کنیم.
در این بخش، به ایجاد کلاس UserController برای مدیریت کاربران و بهینهسازی نحوه ذخیرهسازی اطلاعات کاربران میپردازیم. هدف این است که کدها سازمانیافتهتر، تمیزتر و قابل نگهداریتر باشند.
در این بخش، به بهینهسازی کلاس Router برای ارسال پارامترهایی مانند ID، نام و سایر مطالب به روتها و دریافت آنها در کنترلرها میپردازیم. این کار به ما امکان میدهد که درخواستها را به درستی مدیریت کنیم و پارامترها را به کنترلرها ارسال کنیم.
در این بخش، به ویرایش اطلاعات کاربران با استفاده از AJAX و ارسال پارامترهای کاربر از طریق URI به روتر میپردازیم. این کار به ما امکان میدهد تا بدون بارگذاری مجدد صفحه، اطلاعات کاربران را ویرایش کنیم و پارامترها را به روتر و کنترلرها ارسال کنیم.
کلاس Validation برای اعتبارسنجی دادههایی که از سمت کاربر از طریق فرمها ارسال میشود استفاده میشود. این کلاس تضمین میکند که دادههای ورودی قبل از ذخیرهسازی در دیتابیس، معتبر باشند. استفاده از متدهای استاتیک به ما امکان میدهد تا به سادگی و بدون نیاز به نمونهسازی از کلاس، متدها را فراخوانی کنیم.
در این قسمت به معرفی نرمال سازی دیتاهای ارسال از فرم در PHP میپردازیم تا بتوانیم از حملات Script Injection جلوگیری کنیم .
در این بخش، به پیادهسازی کلاس Validation درون کلاسهای کنترلر میپردازیم تا بتوانیم اعتبارسنجی را بر روی دادههای ارسالی از فرمها انجام دهیم. همچنین، در صورتی که اعتبارسنجی موفقیتآمیز نبود، خطاهایی را به کاربر نمایش دهیم
پس از اطمینان از اینکه دادههای ورودی از سمت کاربر به درستی نرمالسازی و اعتبارسنجی شدهاند، اکنون میتوانیم با خیال راحت این اطلاعات را درون دیتابیس ذخیره کنیم. در این بخش، پیادهسازی نهایی برای ایجاد کاربران در دیتابیس را انجام میدهیم.
فلش مسیجها (پیامهای موقتی) به پیامهایی اطلاق میشود که برای یک دوره کوتاه (مثلاً بعد از یک عملیات خاص) به کاربر نمایش داده میشوند و پس از نمایش از بین میروند. در این بخش، به پیادهسازی فلش مسیجها و همچنین حذف کاربران همراه با نمایش فلش مسیجها به کاربر میپردازیم.
در این بخش، به پیادهسازی فرم ویرایش اطلاعات کاربران در پنل ادمین میپردازیم. ابتدا فرم ویرایش را ایجاد کرده و سپس عملیات بهروزرسانی اطلاعات کاربر را در کنترلر مدیریت میکنیم. همچنین از فلش مسیجها برای نمایش پیامهای موفقیت یا خطا استفاده خواهیم کرد.
در این بخش، به پیادهسازی سیستم ثبت نام و اعتبارسنجی کاربران (authenticate) میپردازیم. این سیستم شامل ایجاد فرم ثبت نام، اعتبارسنجی دادههای ورودی، ثبت اطلاعات کاربر در دیتابیس و نمایش خطاها به کاربر است.
یکی از مهمترین اصول در طراحی سیستمهای ثبت نام، اطمینان از یونیک بودن ایمیل کاربران است. ایمیل به عنوان یک شناسه یکتا برای هر کاربر عمل میکند و تضمین میکند که هر حساب کاربری منحصر به فرد است. در این بخش، دلایل یونیک بودن ایمیل و نحوه جلوگیری از ثبت کاربران با ایمیل یکسان را بررسی میکنیم.
یکی از بخشهای حیاتی هر فریمورک وب، مدیریت سشنها (Session) است. سشنها به ما امکان میدهند تا اطلاعات مربوط به کاربر را بین درخواستهای مختلف حفظ کنیم. در این بخش، به ایجاد کلاس Session در فریمورک آپارات میپردازیم و دلایل ایجاد و نحوه استفاده از آن را بررسی میکنیم.
در این بخش، به پیادهسازی فرم لاگین و تکمیل مبحث authentication با استفاده از کلاس Session که در مراحل قبل ایجاد کردیم، میپردازیم. هدف این است که کاربران پس از ثبت نام بتوانند وارد سایت شوند و اطلاعات آنها بین درخواستها حفظ شود.
در این بخش، به پیادهسازی عملیات خروج (Logout) کاربران و پاکسازی سشنها در فریمورک میپردازیم. هدف این است که کاربران پس از خروج، تمامی اطلاعات سشن آنها پاکسازی شود تا امنیت اطلاعات حفظ شود.
میدلورها (Middleware) نقش مهمی در مدیریت دسترسیها و کنترل جریان درخواستها در یک فریمورک وب ایفا میکنند. با استفاده از میدلورها، میتوانیم بررسی کنیم که آیا کاربر مجاز به دسترسی به یک روت خاص است یا خیر. در این بخش، به معرفی میدلورها و پیادهسازی سیستم authorization برای بررسی دسترسی کاربران به روتهای مختلف میپردازیم.
در این بخش، به ایجاد میدلور دسترسیها به قسمتهای مختلف پنل ادمین و پنل کاربری میپردازیم تا کاربران نتوانند به قسمتهای غیرمجاز دسترسی پیدا کنند. همچنین هر دو گروه کاربران (ادمین و کاربران عادی) باید در یک پنل با نقشهای متفاوت به منوها و کنترلرهای متفاوت دسترسی داشته باشند.
در این بخش، به پیادهسازی منوهای کاربری و پنل ادمین بر اساس نقش کاربر میپردازیم. با توجه به نقش کاربر (ادمین یا کاربر عادی)، منوهای مختلفی برای آنها نمایش داده میشود. این کار به ما کمک میکند تا تجربه کاربری بهتری ارائه دهیم و دسترسیهای مناسب را به کاربران بدهیم.
در این بخش، به پیادهسازی تنظیمات پنل ادمین و پنل کاربری بر اساس نقش کاربر میپردازیم. هدف این است که منوها و بخشهای مختلف هر پنل بر اساس نقش کاربر بارگزاری شوند و کاربران تنها به بخشهای مجاز دسترسی داشته باشند.
در این بخش، میدلوری را پیادهسازی میکنیم که بررسی میکند آیا کاربر تنظیمات لازم (مانند نام کانال و بکگراند) را در پنل کاربری خود تکمیل کرده است یا خیر. اگر این تنظیمات تکمیل نشده باشد، کاربر از بارگزاری ویدیو منع میشود و به صفحه تنظیمات هدایت میشود.
در این بخش، به پیادهسازی فرم بارگزاری ویدیو و ثبت اطلاعات آن در دیتابیس میپردازیم. هدف این است که کاربران بتوانند ویدیوهای خود را از طریق فرم بارگزاری کنند و اطلاعات مربوط به ویدیو در دیتابیس ذخیره شود.
در این بخش، به بهینهسازی متود ذخیرهسازی اطلاعات ویدیو در کلاس VideoController میپردازیم و با رعایت اصول SOLID، کد خود را بهبود میبخشیم. این اصول به ما کمک میکنند تا کدهای قابل توسعه و نگهداریتری بنویسیم.
در این بخش، به پیادهسازی فرم ویرایش ویدیو میپردازیم تا کاربران بتوانند اطلاعات یا فایل ویدیوی خود را در صورت نیاز بهروز رسانی کنند.
در این بخش، به پیادهسازی مراحل حذف ویدیو با استفاده از تکنولوژی AJAX و کتابخانه SweetAlert میپردازیم. این روش به کاربران و مدیران سایت اجازه میدهد تا ویدیوها را بهصورت سریع و بدون بارگذاری مجدد صفحه حذف کنند.
در این بخش، به پیادهسازی صفحه اصلی با استفاده از دستهبندیها و نمایش ویدیوهای مرتبط با هر دستهبندی به صورت داینامیک میپردازیم. هدف این است که کاربران بتوانند به راحتی ویدیوهای مختلف را بر اساس دستهبندی مشاهده کنند.
در این بخش، به بهینهسازی HomeController میپردازیم تا بتوانیم با استفاده از JOINها در MySQL، اطلاعات مربوط به کاربران و ویدیوها را به صورت بهینهتری دریافت کنیم. هدف این است که اطلاعات کاربرانی که ویدیوها را در دستهبندیهای مختلف بارگزاری کردهاند، نیز نمایش داده شود.
در این بخش، به پیادهسازی اعتبارسنجی برای نام کانالها میپردازیم. هدف این است که نام کانالها منحصر به فرد باشند و حتماً به صورت لاتین وارد شوند. این اعتبارسنجیها به ما کمک میکنند تا از مشکلات آتی جلوگیری کنیم و کیفیت دادههای وارد شده را بهبود ببخشیم.
در این بخش، به پیادهسازی صفحه دستهبندی میپردازیم تا کاربران بتوانند تمامی ویدیوهای مرتبط با یک دستهبندی خاص را مشاهده کنند. این صفحه به کاربران اجازه میدهد که با انتخاب یک دستهبندی از منوها یا صفحه اصلی، ویدیوهای مرتبط با آن دستهبندی را مشاهده کنند.
در این بخش، به پیادهسازی منطق follow و unfollow در شبکههای اجتماعی میپردازیم. این عملیات معمولاً شامل استفاده از جدول میانی (junction table) برای ایجاد رابطه بین کاربران و دنبالکنندگان است. همچنین، این منطق را در محیط کانالهای خود پیادهسازی میکنیم تا کاربران بتوانند یکدیگر را دنبال و دنبال کردن را لغو کنند.
در این بخش، به پیادهسازی شمارش تعداد فالوورهای هر کانال میپردازیم و این اطلاعات را هم در پنل کاربری و هم در کانال کاربر نمایش میدهیم.
در این بخش، به ایجاد صفحه نمایش ویدیو میپردازیم تا کاربران بتوانند ویدیوهای موجود در سایت را به صورت داینامیک مشاهده کنند. این صفحه شامل جزئیاتی مانند عنوان ویدیو، توضیحات، تعداد بازدید و نظرات کاربران خواهد بود.
در این بخش، به تکمیل صفحه نمایش ویدیو میپردازیم تا شامل جزئیاتی مانند تعداد بازدید، تعداد لایک، فالو کردن، و دانلود ویدیو باشد.
در این بخش، به پیادهسازی نمایش تمامی فالوورها و فالووشدگان در پنل کاربر میپردازیم. کاربران باید بتوانند لیستی از کسانی که آنها را دنبال کردهاند (فالوورها) و کسانی که خودشان دنبال کردهاند (فالووشدگان) را مشاهده کنند. همچنین باید امکان حذف فالوورها و فالووشدگان وجود داشته باشد.
در ادامه بخش اول، در این قسمت به تکمیل پیادهسازی نمایش تمامی فالوورها و فالووشدگان در پنل کاربر میپردازیم. کاربران باید بتوانند لیستی از کسانی که آنها را دنبال کردهاند (فالوورها) و کسانی که خودشان دنبال کردهاند (فالووشدگان) را مشاهده و مدیریت کنند. همچنین باید امکان حذف فالوورها و فالووشدگان وجود داشته باشد.
در این بخش، به معرفی ویدیوهایی که بیشترین بازدید را داشتهاند میپردازیم و آنها را در صفحه اصلی و صفحهای جداگانه نمایش میدهیم. این ویژگی به کاربران اجازه میدهد که به سرعت ویدیوهای محبوب را پیدا کرده و مشاهده کنند.
در این بخش، به پیادهسازی لایک ویدیوها و استفاده از جدول علاقهمندیها میپردازیم. این ویژگی به کاربران امکان میدهد که ویدیوهای مورد علاقه خود را لایک کرده و آنها را در لیست علاقهمندیهای خود ذخیره کنند.
در این بخش، به پیادهسازی نمایش بهترین ویدیوها در صفحه اصلی بر اساس تعداد بازدید و تعداد لایک میپردازیم. این کار با استفاده از فرمولی که نسبت تعداد لایکها به تعداد بازدیدها را محاسبه میکند انجام میشود و بر اساس آن، ویدیوهای برتر را استخراج میکنیم.
در این بخش، به بررسی منطق ایجاد کامنتها برای هر ویدیو میپردازیم و همچنین منطق آن را طوری پیادهسازی میکنیم که کاربر مالک ویدیو بتواند اجازه تایید این کامنت یا یادداشت را برای ویدیو بدهد.
در این بخش، به معرفی ORM (Object Relational Mapping) برای ارتباط با دیتابیس در PHP میپردازیم و مزایای آن را بررسی میکنیم. همچنین پکیج Illuminate/Database (بخشی از فریمورک Laravel) که Eloquent ORM را فراهم میکند، معرفی خواهد شد.
در این بخش، به ایجاد سرچ باکس در پروژه برای جستجوی تمامی محتواهای داخل سایت مانند نام کاربر، نام کانال و ویدیوها با استفاده از ORM Eloquent میپردازیم. همچنین پلاگین Easy-Code برای ادیتورهای PHPStorm و VSCode را معرفی میکنیم.
در این بخش، به بررسی قسمتهای مختلف cPanel و آمادهسازی محیط برای بارگزاری پروژه آپارات میپردازیم. سپس مراحل بارگزاری پروژه را انجام خواهیم داد.
تبریک میگوییم! شما به پایان دوره آموزشی خود رسیدید. در این جلسه پایانی، قصد داریم نکاتی درباره ادامه مسیر و توسعه بیشتر مهارتهایتان در برنامهنویسی PHP و توسعه وب ارائه دهیم.
نظرات شما