دوره مجازی PHP (جلسه 22): برنامه نویسی شی گرا - مفاهیم پیشرفته

- visibility ۲۷ mode_comment

در جلسه ی امروز می خوایم در مورد مباحث پیشفرته تر در برنامه نویسی شی گرا صحبت کنیم . در این جلسه در مورد کلاس های abstract و interface ها صحبت می کنیم و بعضی مفاهیم مهم و کاربردی دیگه رو توضیح میدیم .

مطالب مطرح شده در این جلسه عبارتند از :

مفاهیم پیشرفته در برنامه نویسی شی گرای PHP

  • توضیحات تکمیلی در مورد کاربرد های کیورد static
  • افزودن قابلیت شمارش تعداد نمونه های ساخته شده از یک کلاس
  • کپی کردن اشیاء با استفاده از clone
  • عدم کپی شدن اشیاء با عملیات انتساب و رفتار این عملیات
  • تشخیص کلاس یک شئ و نمونه ی ساخته شده با عملگر instanceof
  • تعین نوع پارامترهای ورودی متد ها (type hinting)
  • مقداردهی خصوصیت های خاص فرزندان یک کلاس در متد سازنده ی آن
  • استفاده از متد سازنده ی کلاس پدر/والد در کلاس های فرزند
  • توضیحات تکمیلی در مورد کیورد final
  • جلوگیری از extend شدن یک کلاس با استفاده از کیورد final
  • ثابت های جادویی برای دریافت نام کلاس، متد و فضای نام کنونی
  • دریافت اطلاعات همه ی خصوصیات یک شئ و کلاس
  • دریافت مشخصات همه ی متدهای یک شئ و کلاس
  • آشنایی کلی با زبان UML و مدلسازی ساختار کلاس های یک سیستم
  • کلاس های abstract در PHP و کاربرد آنها
  • متدهای abstract و توضیح آن
  • رابط ها (interfaces) و دلیل استفاده از آن ها
  • آشنایی با مفهوم Object Iteration
  • اصول و مفاهیم برنامه نویسی شئ گرا :
  • مفهوم ارث بری (Inheritance)
  • مفهوم مخفی سازی (Encapsulation)
  • مفهوم چند شکلی (Polymorphism)
  • مفهوم انتزاع/تجرید (Abstraction)
  • Serialization : تبدیل اشیاء و متغیرهای مختلف به رشته و بازیابی آن ها
  • کاربرد مهم تبدیل اشیاء به رشته و ذخیره سازی مستقیم آنها در فایل، سشن و دیتابیس
  • دیدن کاربرد serialization در محبوبترین cms دنیا ، وردپرس
  • دیدن تمام متدها و خصوصیت های  mysqli و PDO و نحوه ی جستجو برای یادگیری کاربرد آنها
  • طراحی ساختار کلاس های وسایل نقلیه
  • مینی پروژه : طراحی و پیاده سازی ساختار کلاس بندی اشیاء هندسی مختلف و تشریح مفاهیم پیشرفته ی شی گرایی در بستر آن
info توجه

این مطلب یک جلسه از دوره حرفه ای PHP می باشد و برای مشاهده آن باید در دوره ثبت نام کنید.

ثبت نام در دوره حرفه ای PHP

comment دیدگاه کاربران

استاد آوند نمی دونم این مورد رو در جلسه مربوط به شی گرایی اشاره کرده بودید یا نه اما معمولا به این دلیل که ست کردن مستقیم متغیرهای کلاس بدون استفاده از متد های ست و گت مشکل امنیتی به وجود میاره ما از متدهای ست و گت استفاده می کنیم. اما من با متد get_class_vars متغیرهای کلاس مثلا mysqli رو در آوردم ,و دیدم که متغیرهای زیادی از این کلاس به صورت عمومی در دسترس هستند. آیا این مورد مشکلی به وجود نمی یاره و چرا خود php به این روش متغیرها رو در دسترس عموم گذاشته؟ با تشگر از وقتی که می ذارید بابت پاسخگویی

لقمان آوند

سلام
بله این مورد رو در دوره گفتیم.
معمولا متغیر هایی که در این کلاس ها در دسترس هستند قابل نوشتن نیستند و مشکلی بوجود نمیاره … (readOnly هستند)

فرهاد

استاد آوند عزیز با توجه به اینکه شما در این جلسه در مورد شی گرایی صحبتتون رو تمام کردید ولی در مورد enumeration ها در php صحبتی به میون نیومد من در مورد نوع های شمارشی در اینترنت سرچ کردم و به مطالب زیر برخوردم:
http://www.dreamincode.net/forums/topic/201638-enum-in-php/
اما ظاهرا اونطوری که این مطلب اشاره کرده برای استفاده از enumeration ها باید از pear و pecl استفاده کنیم به همین خاطر من این سوال برام پیش اومد که pear و pecl چی هستند و اگه امکان داره در موردشون توضیح مختصری بدید. با تشکر

لقمان آوند

pear و pecl مجموعه ای از کدها و پکیج های آماده هستند که کدهایی رو در بر دارند. این کدها ممکنه در پروژه های مختلف قالب استفاده باشه و شما می تونید از پیاده سازی شده اونها در این دو مجموعه استفاده کنید. در اینجا هم توضیحات خوبی در موردش داده شده.
php به صورت پیشفرض نداره enum ها رو و اگر چنین چیزی گفته پس باید از همین دو مجموعه استفاده کنید. در عین حال می تونید با یه ترفند ساده شبیه سازی این چنینی از enum ها داشته باشید :

فرهاد

استاد چرا در php کتابخانه های پیش ساخته اینقدر کم و غیر کافی هستند؟ مثلا در این صفحه کلاس ها و interface های از پیش تعریف شده در پی اچ پی لیست شده که همون طور که می بیند انگشت شمار هستند
http://php.net/manual/en/reserved.interfaces.php
و مثلا در این صفحه exception های پی اچ پی لیست شدند
http://php.net/manual/en/reserved.exceptions.php
که واقعا محدودند و اصلا جوابگوی برنامه نویس ها نیستند. دلیلش چیه که پی اچ پی در مقایسه با زبان هایی مثل .net اینقدر کدهای از پیش تعریف شده کمی دارند؟ و آیا این به این معنی هست که برنامه نویس ها باید از همین کدهای محدود فقط استفاده کنند؟
با تشکر

لقمان آوند

اقا فرهاد این موارد که کتابخانه نیستند!
اگر لیست کتابخانه های php رو می خواید کافیه list of php libraries رو سرچ کنید تا هر نوع کتابخونه ای رو که می خواید پیدا و استفاده کنید. php اپن سورس هست و حجم کتابخانه های تولید شده توسط افراد مختلف در سطح وب خیلی زیاد هست. تقریبا برا هر کاری کتابخونه های خوبی داره.

استاد با استفاده از constractor نمیشد wife رو براش تعریف کرد؟
حتما باید از setwife استفاده کرد؟

لقمان آوند

بله خوب معلومه که میشه
هر مقداری رو توی توابع set قرار میدید میشه با پاس دادنش به کانستراکتور هم ست کنید

نیاز به لاگین

برای ارسال دیدگاه و یا پرسیدن سوال خود در این قسمت، باید در سایت لاگین شوید.
1 2