رتبه موضوع:
  • 0 رای - 0 میانگین
  • 1
  • 2
  • 3
  • 4
  • 5
سرفصل های پکیج پایه تا پیشرفته PHP
#1
Rainbow 
در این تاپیک، سرفصلهای هرکدام از جلسات موجود در پکیج، اعلام خواهد شد.
تشکر شده توسط: sm_pakdel
#2
سرفصلهای جلسه اول (مدت جلسه 2 ساعت و 50 دقیقه) - موضوع جلسه: آماده سازی محیط کار :
نصب ویندوز و لینوکس بصورت مجازی
دانلود و نصب پکیج AMP در لینوکس
دانلود و نصب پکیج XAMPP در ویندوز
دانلود و نصب OpenJDK در لینوکس (موردنیاز برای NetBeans)
دانلود و نصب Java Runtime Environment در ویندوز (موردنیاز برای Zend Studio)
دانلود و نصب NetBeans IDE در لینوکس
دانلود و نصب Zend Studio در ویندوز
تعریف Permissionهای موردنیاز در لینوکس
دانلود و نصب Firefox در ویندوز
دانلود و نصب Themeهای موردنیاز در Zend Studio و NetBeans
تست نصب صحیح پکیجهای AMP و XAMPP با فراخوانی مسیر localhost در مرورگر
-----
همونطور که مشاهده میکنید، توی این پکیج همه چیز از صفر توضیح داده میشه تا جایی که نصب نرم افزارهای موردنیاز و نحوه تنظیم کردن سیستم عامل هم برای انجام کارها توضیح داده شده.
تشکر شده توسط:
#3
سرفصلهای جلسه دوم (مدت جلسه 2 ساعت و 14 دقیقه) - موضوع جلسه: مفاهیم پایه :
تفاوت صفحات وب پویا با ایستا
نحوه پردازش درخواست کاربر و تولید خروجی موردنظر با همکاری وب سرور و مفسر PHP
آشنایی با دستور echo
اولین قانون در PHP
توضیحات در PHP
متغیرها
قواعد نامگذاری متغیرها
تفاوت روشهای مقداری و ارجاعی در استفاده از متغیرها
انواع متغیرها در PHP
کار با رشته ها
ادغام رشته ها
تفاوت رشته های محصور در گیومه تک و جفت
استفاده از عدد بعنوان رشته
استفاده از رشته بعنوان عدد
محاسبه طول رشته
تفاوت کارکترهای Unicode و معمولی
عملگرها در PHP
عملگرهای ریاضی
عملگرهای مقایسه ای
عملگرهای منطقی
عملگرهای بیتی
اولویت و خاصیت انجمنی عملگرها
-----
نکته: دقت کنید که وقتی برای این مباحث ساده دو ساعت و ربع توضیح و مثال ارائه شده، چقدر این مجموعه میتونه به تازه کارها کمک کنه. ضمناً مثالها در هر دو محیط لینوکس و ویندوز اجرا و تست میشن.
تشکر شده توسط:
#4
سرفصلهای جلسه سوم (مدت جلسه 1 ساعت و 39 دقیقه) - موضوع جلسه: ساختارهای کنترلی و تکرار :

نصب ++Notepad و تنظیمات آن
ساختار شرطی if...elseif...else
کاربرد elseif و تفاوت آن با else if
کاربرد else
استفاده از آکولاد برای مشخص کردن بلاک دستورات
بررسی خطاهای احتمالی کاربران در استفاده از ساختار if
معرفی ساختار switch...case
مواردی که نمیتوان از switch استفاده کرد
نقش دستور break در ساختار switch و بررسی موارد کاربرد عدم استفاده از آن در ادغام چند case
نکات امنیتی در استفاده از ساختار switch (بحث تبدیل نوع متغیر و حفره های امنیتی احتمالی که ممکن است ایجاد شود و راهکار جلوگیری از آن)
معرفی دستور settype جهت تغییر نوع متغیر
ساختار شرطی سه گانه : ?
شرایط لازم برای امکان استفاده از این ساختار
ساختار تکرار while
موارد کاربرد
نکات مهم در هنگام استفاده از while جهت پرهیز از حلقه بینهایت
معرفی تنظیمات PHP در php.ini جهت تعیین حداکثر زمان اجرای اسکریپت
معرفی ساختار کدنویسی استاندارد جهت آکولادها برای بهره بردن از امکانات IDEهای پیشرفته
حلقه while معکوس (تکرار تا زمان عدم برقراری شرط و خروج به محض برقرارشدن شرط حلقه)
معرفی ساختار تکرار do...while و تفاوت آن با while در بررسی شرط در پایان حلقه
معرفی ساختار for
بررسی جداگانه بخشهای Initialization و Conditions و Iteration در حلقه for
نوشتن و اجرای بیش از یک دستور در بخشهای مختلف حلقه for
حذف بخشهای مختلف حلقه for
حلقه تو در تو
خروج اضطراری از حلقه در شرایط خاص
نادیده گرفتن یک دور از حلقه در شرایط خاص
استفاده از PHP و حلقه های تودرتو برای تولید جدول ضرب (کاربرد PHP در تولید کد HTML سفارشی - رنگ آمیزی جدول و... - بصورت پویا)
-----
نکته: در این آموزش، مطابق روال کلی این پکیج، برنامه ها در هر دو محیط لینوکس و ویندوز تست و اجرا میشن و هرجا تفاوتی لازم هست، گوشزد میشه. ازطرفی کلیدهای میانبر کاربرد و سودمند محیطهای برنامه نویسی به کار رفته در این آموزش هم معرفی میشن تا به شما در استفاده بهتر از امکانات برنامه ها و درنتیجه افزایش سرعت در کدنویسی، کمک کنیم.
تشکر شده توسط:
#5
سرفصلهای جلسه چهارم (مدت جلسه 1 ساعت و 52 دقیقه) - موضوع جلسه: آرایه ها:

مفهوم آرایه
تفاوت آرایه های PHP با سایر زبانها
چرا آرایه ها در PHP اینقدر معروف و قدرتمند هستند؟
انواع روشهای مختلف تعریف آرایه در PHP (با کمک کروشه و دستور array)
محاسبه تعداد عناصر آرایه (دستور count)
تغییر عناصر آرایه
حذف عناصر آرایه (معرفی دستور unset)
آرایه با اندیس رشته ای
ایجاد آرایه خالی
نمایش کلی آرایه (معرفی و توضیح دستورات print_r و var_dump و var_export و تفاوت آنها)
معرفی و توضیح دستور range
پیمایش آرایه با foreach و روشهای مختلف کاربرد و محدودیتهای آن
دستور each و تفاوت آن با ساختار foreach
معرفی و توضیح دستورات کار با آرایه ها
-----
دستور array_change_key_case
دستور array_chunk
دستور array_column
دستور array_count_values
دستور array_diff
دستور array_key_exists
دستور in_array
دستور array_map
دستور array_merge
دستور array_replace
دستور array_reverse
دستور array_sum
دستور array_unique
دستور current
دستور each
دستور end
دستور next
دستور prev
دستور reset
دستور shuffle
دستور sizeof
دستور sort
-----
آرایه های چند بعدی
پیمایش آرایه های چند بعدی با حلقه های تودرتو
کاربرد دستور explode در تبدیل رشته به آرایه
کاربرد دستور implode در تبدیل آرایه به رشته
چیدن عناصر آرایه در متغیرهای معمولی با دستور list
پیمایش آرایه های دارای اندیس رشته ای با حلقه for (معرفی دستورات array_keys و array_values)
روشهای مختلف استخراج عنصر تصادفی از آرایه (معرفی دستورات array_rand و rand)
-----
در این آموزش مثل یک نوآموز در برخی موارد مشکلاتی در درک نحوه کارکرد دستورات پیش میاد (شبیه سازی شده) که با مطالعه مستندات و مراجعه به سایت رسمی php.net و خوندن توضیحات و بعضاً کامنتها، مشکل برطرف میشه تا افراد تازه کار، با بهترین دوستشون در مسیر یادگیری یعنی سایت php.net و نحوه راهنمایی گرفتن از اون، آشنا بشن.
تشکر شده توسط:
#6
سرفصلهای جلسه پنجم (مدت جلسه 1 ساعت و 32 دقیقه) - موضوع جلسه: متغیرها و توابع :

متغیرهای متغیر (Variable variables)
داده و کد: دو رکن اساسی برنامه نویسی
مفهوم و نقش تابع
تعریف تابع در PHP
ارسال مقادیر ورودی برای تابع
محدوده اعتبار متغیرها (Scope)
تشریح تفاوت پارامتر و آرگومان
استفاده از پارامترهای ارجاعی
دریافت خروجی از تابع
استخراج بیش از یک خروجی از تابع با کمک پارامترهای ارجاعی
خروج از تابع بدون دریافت مقدار
متغیرهای ایستا (static) در توابع
توابع متغیر
توابع بدون نام
حذف توابع بدون نام تعریف شده
دستورات کار با توابع:
-----
دستور call_user_func_array
دستور call_user_func
دستور create_function
دستور func_get_arg
دستور func_get_args
دستور func_num_args
دستور function_exists
دستور get_defined_functions
دستور register_shutdown_function
دستور register_tick_function
دستور unregister_tick_function
-----
توضیح مفهوم callback
تعریف پارامترهای اختیاری (با مقدار پیشفرض)
نحوه رد کردن (Skip) پارامترهای اختیاری
بررسی وجود Named Parameters در PHP با جستجو در اینترنت (و نتیجه عدم وجود)
توضیح روش جایگزین جهت شبیه سازی قابلیت Named Parameters
نوشتن کد معادل تابع array_map با کمک توابع متغیر
-----
توی این جلسه، بصورت عملی یک مشکل که در نهایت هم طی جستجوهای انجام شده، مشخص میشه با امکانات موجود زبان PHP قابل حل نیست، نشون داده شده و راه حل جایگزینش معرفی میشه تا بینندگان اگه دیدن قابلیتی وجود نداره، دچار اضطراب نشن و بدونن برنامه نویس، میتونه درصورت تمایل با کمک ابزارهای موجود، قابلیت دلخواه خودش رو اضافه کنه.
تشکر شده توسط:
#7
سرفصلهای جلسه ششم (مدت جلسه 1 ساعت و 50 دقیقه) - موضوع جلسه: پردازش ورودیهای کاربر :

دسترسی به متغیرهای سراسری از داخل تابع
متغیرهای فوق سراسری (SuperGlobal) در PHP
تشریح کامل تفاوت نحوه ارسال مقادیر با روشهای Post و Get
نقاط ضعف و قوت روش Get
نقاط ضعف و قوت روش Post
معرفی آرایه های فوق سراسری POST_$ و GET_$
دریافت مقادیر عناصر text
دریافت مقادیر عناصر password
حذف حساسیت نام کاربری به بزرگی و کوچکی حروف
دریافت مقادیر عناصر radio
دریافت مقادیر عناصر checkbox
دریافت مقادیر عناصر select
عنصر select با قابلیت انتخاب چندگانه و پردازش آن بصورت آرایه در PHP
دریافت مقادیر عناصر hidden
خنثی سازی کارکترهای خطرناک در ورودیهای کاربر
آپلود فایل و تغییرات لازم در فرم
معرفی آرایه فوق سراسری FILES_$
انواع خطا در آپلود فایل
علت لزوم بررسی مجدد اندازه فایل در سمت سرور
آپلود چند فایل بصورت همزمان
امنیت آپلود (پسوندهای چندگانه و مجوزهای اجرا)
بحث مجوزهای پوشه آپلود در لینوکس جهت ایجاد امکان ذخیره سازی فایل در پوشه توسط PHP
توضیح دستورات chmod و chown و chgrp در PHP و لینوکس
معرفی دستور shell_exec در PHP
آرایه فوق سراسری REQUEST_$ و یادآوری نکات امنیتی مربوط به استفاده از آن
تشکر شده توسط:
#8
سرفصلهای جلسه هفتم (مدت جلسه 1 ساعت و 25 دقیقه) - موضوع جلسه: کار با فایلها و پوشه ها :

توضیح یک مورد درخواستی توسط کاربران: پردازش فرمهایی با چند دکمه submit و تشخیص دکمه فشرده شده
-----
توضیح مراحل سه گانه کار با فایلها
باز کردن فایل در PHP (دستور fopen)
مدیریت خطاهای احتمالی (معرفی دستورات die و exit و ساختار @)
خواندن از فایل (دستورات fgetc و fgets و fread و file و file_get_contents)
نوشتن در فایل (دستورات fputs و fwrite و file_put_contents)
تشخیص رسیدن به انتهای فایل (دستور feof)
بستن فایل (دستور fclose)
معرفی دستورات کار با فایل:
-----
دستور basename
دستور chgrp
دستور chmod
دستور chown
دستور clearstatcache
دستور copy
دستور delete
دستور dirname
دستور disk_free_space
دستور disk_total_space
دستور fflush
دستور fgetcsv
دستور fgetss
دستور file_exists
دستور fileatime
دستور filectime
دستور filegroup
دستور fileinode
دستور filemtime
دستور fileowner
دستور fileperms
دستور filesize
دستور filetype
دستور flock
دستور fseek
دستور ftell
دستور ftruncate
دستور glob
دستور is_dir
دستور is_executable
دستور is_file
دستور is_link
دستور is_readable
دستور is_uploaded_file
دستور is_writable
دستور mkdir
دستور pathinfo
دستور realpath
دستور rename
دستور chdir
دستور glob
دستور opendir
دستور scandir
دستور closedir
دستور readdir
دستور rewind
دستور tempnam
دستور tmpfile
دستور touch
دستور unlink
-----
ساخت گالری عکس ساده ولی زیبا با کمک PHP و HTML و CSS
تست گالری و تنظیمات مربوط به مجوزها در محیط لینوکس
تشکر شده توسط:
#9
سرفصلهای جلسه هشتم (مدت جلسه 2 ساعت و 25 دقیقه) - موضوع جلسه: دیتابیس (پایگاه داده ها) :
توضیح مفهوم پایگاه داده ها و تفاوت آن با سیستم فایل معمولی
توضیح مفهوم DBMS و پایگاه داده رابطه ای و RDBMS
معرفی چند نمونه از DBMSهای رایج
تشریح مفاهیم دیتابیس، جدول، فیلد و رکورد
توضیح علت کاربرد گسترده MySQL در کنار PHP
آشنایی با محیط خط فرمان MySQL
آشنایی با محیط phpMyAdmin
ساخت دیتابیس و مفهوم Collation و معرفی کدگذاریهای رایج برای زبان فارسی
نحوه اجرای دستورات SQL در phpMyAdmin
ایجاد جدول جدید در محیط phpMyAdmin
اضافه کردن فیلدهای دلخواه به جدول
معرفی ستون Name
معرفی ستون Type
معرفی ستون Length/Values
معرفی ستون Default و تشریح مقادیر مختلف آن (معرفی مفهوم Timestamp)
معرفی ستون Collation
معرفی ستون Attributes و تشریح مقادیر مختلف آن
معرفی ستون Null
معرفی ستون Index و تشریح انواع Primary و Unique و Index و FullText
معرفی ستون A_I یا Auto Increment
معرفی ستون Comments
معرفی ستون MIME type
معرفی ستون Browser transformation
معرفی تفاوتهای Storage Engineهای مختلف مثل InnoDB و MyISAM و نقش و کاربرد و مزایا و معایب هرکدام با ارجاع به سایت dev.mysql.com
درج رکوردهای موردنظر در داخل phpMyAdmin
معرفی روشهای مختلف اتصال از PHP به MySQL (شامل mysql و mysqli و PDO)
تشریح افزونه mysql و موکول شدن mysqli و PDO به بعد (همراه با توضیح علت - عدم آشنایی کاربران برنامه نویسی شئ گرا تاکنون)
اتصال به MySQL از درون PHP
انتخاب دیتابیس موردنظر
روش پنهان کردن خطاهای پیشفرض و نمایش خطاهای دلخواه
اجرای کوئری دلخواه و گرفتن نتایج از MySQL
تشریح مفهوم Fetch کردن و روشهای مختلف آن (با اندیس عددی و رشته ای و شئ و...)
آزادسازی حافظه اختصاص داده شده به خروجی MySQL بعد از استفاده
بستن اتصال به MySQL
تشریح علت بروز خطای Too Many Connections در MySQL
مشکل نمایش حروف فارسی بصورت ????? و راه حل برطرف کردن آن
پیاده سازی چهار عمل اصلی دیتابیس (CRUD مخفف Create و Read و Update و Delete) در برنامه بصورت عملی
تغییر در مقدار فیلد Auto Increment
جلوگیری از ارسال مجدد فرم با کمک دستور header و عمل Redirect
بهره گیری از Javascript در نمایش پیغام هشدار قبل از حذف رکوردها
اجرای یک نمونه حمله SQL Injection ساده جهت آشنایی کاربران با میزان خطر و آموزش نحوه رفع این حفره امنیتی
تست برنامه در محیط لینوکس
دانلود و نصب آخرین نسخه phpMyAdmin بصورت دستی در محیط لینوکس
تنظیمات config.inc.php جهت کارکرد صحیح phpMyAdmin
-----
توضیح: در این آموزش یکی دیگه از مهمترین منابع آموزشی و درحقیقت یک دوست خوب دیگه برنامه نویسان وب یعنی dev.mysql.com معرفی میشه.
تشکر شده توسط:
#10
سرفصلهای جلسه نهم (مدت جلسه 2 ساعت و 2 دقیقه) - موضوع جلسه: کوکی (Cookie) و سشن (Session) :
یک نکته مهم در بحث Escape کردن اطلاعات در MySQL در زمان استفاده از متون فارسی
توضیح مفهوم کوکی (Cookie) و کاربرد آن
توضیح نحوه کارکرد سیستم کوکی و رفتار مرورگر در مدیریت آن
تعریف کوکی در PHP (دستور setcookie)
خواندن اطلاعات کوکی با کمک آرایه فوق سراسری COOKIE_$
تعیین طول عمر برای کوکی به دو روش بازه زمانی و تاریخ مشخص
روش حذف کوکی
مشاهده کوکی در مرورگر و حذف دستی آن
پیاده سازی سیستم Login و Logout با کوکی همراه با قابلیت Remember me
یک نکته مهم درخصوص بدست آوردن اطلاعات کوکی بعد از تعریف کردن
تشریح مفهوم Outbut Buffering و نقش آن در مدیریت اطلاعات
تفاوت کدگذاری UTF-8 و UTF-8 without BOM و نحوه رفع خطای معروف Cannot modify headers و خطاهای مشابه آن
معرفی سشن
تفاوتهای سشن و کوکی و نقاط قوت و ضعف هرکدام
معرفی تنظیمات مختلف سشن در php.ini
ارتباط بین سشن و کوکی
مشاهده فایلهای سشن ایجاد شده در سیستم
نقش Session ID
کاربرد دستور session_start
تعریف و خواندن اطلاعات سشن با کمک آرایه فوق سراسری SESSION_$
روش حذف سشن
معرفی دستور session_unset
معرفی دستور session_destroy
معرفی حملات Session Hijacking و Session Fixation و نحوه جلوگیری از آنها (معرفی دستور session_regenerate_id)
پیاده سازی سیستم Login و Logout با سشن
اجرای امن دستور session_start
ایجاد کاربر اختصاصی برای دیتابیس و تعیین حق دسترسی
ایجاد فایل تنظیمات
نحوه معرفی فایل تنظیمات به سایر اسکریپتها
معرفی دستورات include و require و include_once و require_once و تفاوت آنها
کاربرد دستور define در تعریف ثابت و تفاوت ثابتها با متغیرها
کاربرد دستور defined
معرفی یک ساختار ساده، زیبا و کارآمد جهت جلوگیری از تعریف مجدد ثابتها
قراردادن توابع و ثابتهای کار با دیتابیس در فایل تنظیمات و فراخوانی آنها در سایر فایلها
معرفی نقطه ضعف الگوریتم هش md5 و برخی ابهامات درباره میزان امنیت آن
تست و اجرای برنامه ها در محیط لینوکس و نحوه یافتن فایلهای تنظیمات و سشن در لینوکس
تشکر شده توسط:
#11
سرفصلهای جلسه دهم (مدت جلسه 4 ساعت و 10 دقیقه) - موضوع جلسه: یک پروژه عملی - وبلاگ :
دریافت فایلهای پیشنیاز برای رهایی از طراحی ظاهر سایت (Bootstrap + FontAwesome)
طراحی ساختار دیتابیس
ایجاد ارتباط بین جداول و توضیح مفهوم کلید خارجی
ایجاد قید در دیتابیس و تشریح مفهوم آن و انواع مختلف قید
استفاده از دو حالت Relation View و سربرگ Designer برای طراحی قیدها و ارتباط بین جداول
تنظیمات phpMyAdmin برای فعال شدن سربرگ Designer
ایجاد یک پروژه جدید در Zend Studio
معرفی سرور Apache برنامه XAMPP و برنامه های مشابه به Zend Studio جهت تست و اجرای پروژه
ایجاد فایل تنظیمات
ایجاد پوشه های مختلف جهت نگهداری فایلهای موردنیاز پروژه
ایجاد فایلهای جداگانه برای سرصفحه و پاصفحه مشترک در تمام صفحات سایت
ایجاد فایل حاوی توابع کار با دیتابیس
ایجاد فایل حاوی توابع کاربردی برنامه
معرفی یک روش تولید رمز امن و معرفی مفاهیم Salt و Pepper
معرفی یک روش امن جهت تولید تابع Redirect
درج اطلاعات تست بصورت دستی در دیتابیس و نمایش در مکان مناسب در قالب سایت
استخراج دسته بندی ها
نمایش آخرین مطالب در صفحه اصلی سایت
نمایش مطالب مربوط به هر دسته بندی در صفحه مربوطه
تولید تاریخ از روی برچسب زمانی
معرفی کتابخانه JDF و نحوه تولید تاریخ هجری شمسی از روی برچسب زمانی
نمایش نظرات مربوط به هر مطلب
نمایش پاسخهای مربوط به هر نظر
تولید فرم درج نظر جدید توسط کاربران با قابلیت انتخاب نظر والد (پاسخ به یک نظر)
Escape کردن گروهی مقادیر واردشده توسط کاربر و انتساب به متغیرهای مجزا
جلوگیری از درج مجدد نظر با Refresh شدن صفحه
تنظیم کردن Zend Studio جهت ذخیره سازی خودکار با فرمت UTF-8 without BOM
ایجاد بخش مدیریت
مدیریت ورود و خروج کاربران
ایجاد منوی کناری بخش مدیریت
مدیریت دسته بندی ها
ایجاد دسته بندی جدید
ویرایش دسته بندی موجود
حذف دسته بندی
نمایش / عدم نمایش دسته بندی
اصلاح بخش کاربری سایت جهت عدم نمایش دسته بندی پنهان شده و مطالب مربوطه
تعریف تمرین برای استفاده کنندگان محترم از این بسته آموزشی
-----
نکته: در این جلسه از آموزش بطور عملی یک پروژه جلوی چشم شما انجام میشه و با روش انجام کارهای مختلف و پردازش ورودیهای کاربر و Escape کردن و مواردی که نیاز به Escape نداره و... آشنا میشین. ازطرفی چند مورد از امکانات پروژه که مشابهشون توی همین جلسه انجام میشه، بعنوان تمرین بعهده شما گذاشته میشه تا خودتون رو محک بزنید. توی این پروژه چون بصورت رویه گرا انجام میشه و از شئ گرایی داخلش استفاده نمیکنیم، عملاً خواهید دید که خیلی جاها دست و بالمون بسته است ولی با اینحال هیچ اشاره ای به شئ گرایی نمیشه (برخلاف آموزشهای موجود در سایت ncis.ir که یکی از فایلها بصورت شئ گرا نوشته شده بود) و از جلسه بعد بطور کامل به شئ گرایی خواهیم پرداخت و بعد از کسب دانش پایه لازم، پروژه بعدی یعنی فروشگاه اینترنتی رو با کمک شئ گرایی و امکانات قدرتمندی مثل وراثت و رابطها و... پیاده سازی خواهیم کرد.
تشکر شده توسط:
#12
سرفصلهای جلسه یازدهم (مدت جلسه 1 ساعت و 58 دقیقه) - موضوع جلسه: مقدمات برنامه نویسی شئ گرا :
مفهوم برنامه نویسی شئ گرا و تفاوت آن با برنامه نویسی رویه گرا
مشاهده یک نمونه کد شئ گرا و مقایسه با همان کد با ساختار رویه گرا
نواقص و مشکلات روش رویه گرا و راه حل روش شئ گرا برای رفع آنها
تشریح معماری برنامه نویسی شئ گرا (مفاهیم خصوصیت، رفتار و ارتباط) و توضیح کامل با مثال
تشریح مفهوم کلاس و تفاوت آن با شئ با ارائه چندین مثال کاربردی مختلف جهت درک بهتر
توضیح مقدماتی مفهوم وراثت در کلاس ها و مفهوم گسترش (توسعه) یک کلاس توسط کلاس دیگر
نحوه ایجاد یک کلاس در PHP
مفهوم فیلد
مفهوم متد
مفهوم عملگر <-
متد سازنده (با پارامتر ورودی و بدون آن و با پارامترهای اختیاری و مقادیر پیشفرض)
تشریح مفهوم کپسوله سازی کاربرد آن (معرفی و توضیح سطوح دسترسی private و public)
توضیح مفهوم کلاس بعنوان دربرگیرنده فیلدها و متدها با تصویر
معرفی ساختارهای نامگذاری PascalCase و camelCase
معرفی استاندارد نامگذاری کلاسها و نحوه قراردادن کلاسها در فایلهای PHP
دو مثال عملی (کلاس Point و Student)
دسترسی متدها به متدهای دیگر
دسترسی متدها به فیلدها
توضیح کاربرد و نحوه کمک رسانی متدهای private به متدهای public (مفهوم Under the hood)
متد مخرب و تفاوتهای آن با متد سازنده و اجرای یک نمونه استفاده کاربردی
تست و اجرای کدهای نوشته شده در محیط ویندوز و لینوکس
توضیح کاربرد برنامه نویسی رویه گرا در کنار برنامه نویسی شئ گرا
-----
این جلسه رو بعنوان نمونه (Demo) انتخاب کردم (لینک دانلود) تا دوستان با کیفیت مطالب ارائه شده در این مجموعه آشنا بشن و ببینید همین مباحث به ظاهر مقدماتی و ساده، چقدر نکات و توضیحات ریز داره که به تازه کارها کمک میکنه توی یک جلسه، مفاهیم کلی برنامه نویسی شئ گرا رو به خوبی درک کنن. ازطرفی با کیفیت صدا و تصویر مجموعه هم آشنا میشین.
تشکر شده توسط:
#13
سرفصلهای جلسه دوازدهم (مدت جلسه 1 ساعت و 50 دقیقه) - موضوع جلسه: ادامه مباحث شئ گرایی :
مفهوم و کاربرد فیلدها و متدهای استاتیک در کلاس (معرفی کلمات کلیدی static و self و ساختار :: )
یک نکته مهم درخصوص عناصر استاتیک
تعریف ثابت در کلاس (معرفی کلمه کلیدی const)
یک نکته مهم درخصوص سطح دسترسی و حوزه اعتبار و نوع ثابتهای کلاس
سربارگذاری دستیاب های Get و Set با کمک توابع جادویی PHP (معرفی ثابتهای Get__ و Set__)
سربارگذاری متدهای کلاس با کمک تابع جادویی Call__ در PHP
بارگذاری خودکار کلاسها (معرفی مفاهیم Eager Loading و Lazy Loading و کاربرد دستور spl_autoload_register)
وراثت در برنامه نویسی شئ گرا (تعریف کلاس والد و فرزند)
معرفی نحوه ارث بردن کدها (معرفی سطح دسترسی protected)
دسترسی به عناصر کلاس والد با کمک کلمه کلیدی parent
معرفی مفهوم چندریختی (Polymorphism)
جلوگیری از بازنویسی یک متد خاص یا مشتق شدن از یک کلاس بطور کامل (معرفی کلمه کلیدی final)
کلاس abstract و قابلیتها و محدودیتهای آن
رابط (interface) و تفاوتهای آن با کلاس abstract
بررسی تطابق نوع یک شئ با یک کلاس یا مشتق شدن از یک کلاس با دستورات instanceof و is_a
تشکر شده توسط:
#14
سرفصلهای جلسه سیزدهم (مدت جلسه 1 ساعت و 48 دقیقه) - موضوع جلسه: ادامه مباحث شئ گرایی :
گرفتن اطلاعات درباره کلاسها (معرفی دستورات class_exists و get_declared_classes)
گرفتن اطلاعات درباره متدهای کلاس (معرفی دستورات method_exists و get_class_methods)
گرفتن اطلاعات درباره فیلدهای کلاس (معرفی دستورات property_exists و get_class_vars)
بررسی نوع یک شئ یا کلاس (معرفی تفاوت دستورات instanceof و is_a)
پیدا کردن نام کلاس یک شئ (معرفی دستور get_class و نحوه کاربرد آن در پیدا کردن نام کلاس اصلی و کلاس والد)
نحوه مدیریت خطا در PHP5 به روش شئ گرا (معرفی کلاس Exception و توسعه آن برای تولید کلاسهای سفارشی)
ساختار try...catch
مدیریت خطاهای چندگانه
تغییر سیستم مدیریت خطای PHP (ارسال خطاها به ایمیل، ذخیره در فایل و... برحسب نوع دلخواه خطاها)
تعریف پیمایشگر (Iterator) برای پیمایش عناصر کلاس توسط حلقه foreach بصورت دلخواه (پیاده سازی رابط Iterator)
تشریح ساختار رابط Iterator و نحوه کار foreach به دو روش اندیس عددی و رشته ای
معرفی و توضیح متد Rewind
معرفی و توضیح متد Valid
معرفی و توضیح متد Current
معرفی و توضیح متد Key
معرفی و توضیح متد Next
تبدیل شئ به رشته و بازگرداندن به حالت قبل جهت ذخیره در دیتابیس و... (معرفی دستورات serialize و unserialize)
تشریح ساختار داخلی Serialization
تشکر شده توسط:
#15
سرفصلهای جلسه چهاردهم (مدت جلسه 40 دقیقه) - موضوع جلسه: ادامه مباحث شئ گرایی :
تکمیل ساختار try...catch و معرفی بلاک finally
استفاده از آرایه ها بصورت شئ (تبدیل آرایه به شئ با کمک کلاس ArrayObject)
توضیح متد append در کلاس ArrayObject
توضیح متد getIterator در کلاس ArrayObject
توضیح متد offsetExists در کلاس ArrayObject
توضیح متد offsetGet در کلاس ArrayObject
توضیح متد offsetSet در کلاس ArrayObject
توضیح متد offsetUnset در کلاس ArrayObject
دسترسی به عناصر آرایه بصورت فیلدهای شئ (توسعه کلاس ArrayObject با کمک وراثت)
استفاده از اشیاء بصورت آرایه (پیاده سازی رابط ArrayAccess)
توضیح متد offsetExists در رابط ArrayAccess
توضیح متد offsetGet در رابط ArrayAccess
توضیح متد offsetSet در رابط ArrayAccess
توضیح متد offsetUnset در رابط ArrayAccess
توضیح یک نکته مهم در کپی گرفتن از اشیاء (دسترسی ارجاعی به اشیاء)
نحوه ایجاد یک کپی مستقل (مقداری) از اشیاء (معرفی دستور clone)
معرفی مفهوم Model Chaining یا زنجیرسازی متدها و آموزش نحوه پیاده سازی آن
-----
نکته: این جلسه پایان بخش مقدماتی آموزش شئ گرایی هست و شما رو برای انجام پروژه عملی آماده میکنه و بعد از جلسه پانزدهم که به انجام پروژه عملی دوم یعنی فروشگاه اینترنتی اختصاص داره، مباحث پیشرفته تر شئ گرایی مثل معماریهای مختلف ازقبیل ActiveRecord و MVC و Singleton و Factory و Strategy و Adapter و... و همچنین کتابخانه استاندارد PHP یعنی SPL و ساختار داخلی MySQLi و PDO و ADOdb و... توضیح داده میشه و در ادامه هم در جلسات بعدی به سراغ مباحث پیشرفته تر مثل کار با XML و وب سرویسها و سوکت و cURL و... خواهیم رفت.
تشکر شده توسط:




کاربران در حال بازدید این موضوع: 3 مهمان