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

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

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

  •  inheritance
  • encapsulation (public , private , protected)
  • getters and setters
  • Method Chaining In PHP – Fluent Interface

وراثت یا 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 نیست چون سازنده چیزی رو بر نمی گردونه).

Method Chaining In PHP – Fluent Interface

اگر متد مربوطه (getter یا setter یا هرنوع متد دیگری) پس از انجام عملیات خودش شی this رو برگردونه می شه در زمان فراخوانی با متد میشه مثل شی رفتار کرد. یعنی پس از این که از متد استفاده کردیم بلافاصله از همون متد به تمامی ویژگی ها و متد های کلاس دسترسی داشته باشیم و اون ها رو فراخوانی کنیم.

زنجیر کردن متد ها یک راه حل خوب برای متدهایی هستند که از نظر منطقی به هم وابسته اند. مثلا شی جاری دو عملیات پشت سر هم روش توسط دو متد انجام بشه.

مطالب مشابه

آرایه ها در php

در این مقاله قصد داریم تا آرایه ها رو در php بررسی کنیم و همچنین توابع مرتبط با آرایه ها رو بررسی کنیم. انواع آرایه در...

strings-function in php

رشته ها در PHP

توابع مربوط به رشته ها در php کاربردهای زیادی دارند از جمله ساخت رشته های رمزنگاری شده و همچنین ساخت خلاصه متن و تبدیل...

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

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

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

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

دیدگاهتان را بنویسید

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