تعداد بازدید:

شی گرایی در php (قسمت دوم)

مفاهیمی که در این مقاله در رابطه با شی گرایی در پی اچ پی بررسی می کنیم :

  •  inheritance
  • encapsulation (public , private , protected)
  • getters and setters

وراثت یا inheritance

ارث بری یعنی ساخت کلاس جدید با استفاده از کلاس های موجود . به طور مثال در وردپرس ما کلاسی داریم تحت عنوان WP_Widget که ساختارش به گونه ای هست که یک ویدجت میسازه. خوب شما برای ساخت ویدجت جدید خودتون می تونید از این کلاس یک extends بسازید و توابع خاصی رو مجددن توش override کنید.

برای ساخت کلاس فرزند از کلمه کلیدی extends استفاده می کنیم.

کلاس والد (super class) :

کلاس فرزند (sub class) :

همونطور که می بینید :

  • در کلاس فرزند میشه method ها و Attribute های جدیدی داشته باشیم.
  • در کلاس فرزند میشه method های کلاس والد رو override کرد.
  • در کلاس فرزند ما به تمامی المان های کلاس والد (به شرط سطح دسترسی public , protected) دسترسی کامل داریم.(برای استفاده در ساختار های درونی کلاس و الا در زمان ساخت شی دقیقا همون ساختار والد به همراه ساختار های جدید در کلاس فرزند به وجود میاد).
  • مهم : در کلاس فرزند با استفاده از کلمه کلیدی parent:: می تونیم به المان های والد نظیر متدها دسترسی داشته باشیم (در مثال مشاهده فرمودید).

کلمه کلیدی final : اگر قبل از کلاس کلمه کلیدی final رو بیارید اون کلاس دیگه عقیم میشه . یعنی دیگه نمیشه از روش کلاس دومی رو درست کرد.

کپسوله سازی (encapsulation)

کپسول آموکسی سیلین رو در نظر بگیرید ، تشکیل شده از پودر های مختلف . اگر داروخانه به شما تمامی پودر ها رو بده و بگه مصرف کن (خب خیلی بده). برای بهتر شدن روال کار دارساز پودر ها رو در یک کپسول قرار میده و به شما تحویل میده . خوب شما فارغ از این که این کپسول از چه چیزهایی تشکیل شده اون رو مصرف می کنید.

مبحث کپسوله سازی در پی اچ پی یعنی شما بیاید و یه سری موارد که نیازی نیست رو از دید کاربر مخفی کنید.(حداقل دسترسی رو به کاربر بدید).

خوب توی مثال بالا پودرهای کپسول آموکسی سیلین میشه متدهای (spark_pluged و engin_on و turn_wheel) و خود کپسول میشه متد start . پس کاربر بدون نیاز به دونستن نحوه روشن شدن ماشین با متد start ماشین رو روشن میکنه.

ساختار سطوح دسترسی برای کپسوله سازی به شکل زیر است :

 سطح دسترسی داخل کلاس کلاس های فرزند خارج کلاس
public true true true
protected true true false
private true false false

getters and setters

ممکنه برای تغییر مواردی که سطح دسترسی در اون ها امکان پذیر نیست (حال چه private یا protected) متدهایی رو داخل کلاس تعریف کنیم که به اون ها getters , setters می گیم.

نکته : خود متد سازنده (constructor) هم میتونه یه setters باشه . (قطعا getters نیست چون سازنده چیزی رو بر نمی گردونه).

مطالب مشابه

کار با تاریخ و زمان در php

تاریخ و زمان در php

در ابتدا به دو مفهوم مهم در تاریخ و زمان در زبان پی اچ پی اشاره می کنیم : Greenwich Mean Time (GMT) زمان گرینویچ یا...

کوکی ها و نشست ها و راه های ذخیره سازی داده د ر php

Cookie و Session در php

زمانی که بحث ذخیره اطلاعات که مطرح میشه ما امکاناتی برای ذخیره اطلاعاتمون داریم: پایگاه داده (DataBase) فایل ها...

امنیت و رمزنگاری در پی اچ پی

امنیت و رمزنگاری در php

امنیت و رمز نگاری دو مبحث مهم در برنامه ها به شمار میره. به طور کلی ما باید برای حفاظت باید برنامه هامون در برابر حملات...

اشتراک گذاری :

ابوالفضل صباغ

برنامه نویسی رو با زبان C در هفده سالگی شروع کردم . در حال حاضر به برنامه نویسی php برپایه معماری MVC , HMVC و همچنین سیستم مدیریت محتوای WordPress علاقه مند هستم و دوست دارم اطلاعاتم رو با شما به اشتراک بگذارم.

۰ دیدگاه برای شی گرایی در php (قسمت دوم)

پاسخ دهید

نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *