در دو جلسهی قبلی ۱۱ مرحله مختلف را گذراندیم تا مبحث شیءگرایی را در پیاچپی به روش عملی یاد بگیریم. در ادامه به سراغ مراحل بعدی میرویم.
دسترسی مستقیم به پروپرتیها (توصیه نمیشود)
برای دسترسی مستقیم به خواص اشیاء ساخته شده در پیاچپی، نیازی به استفاده از متدها ندارید. شما میتوانید به طور مستقیم با استفاده از عملگر <- و نام متغیر (پروپرتی) مورد نظر، به آن دسترسی داشته باشید.
به عنوان مثال اگر در کلاس پیاچپی نوشته شدهی خود، یک پروپرتی به نام name$ (در شیء mojtaba$) داشته باشید، برای دسترسی به مقدار این متغیر باید از کدی مثل زیر استفاده کنید:
البته همانطور که اشاره کردیم، استفاده از این روش پیشنهاد نمیشود چراکه امکان دارد در ادامه مسیر، با مشکلاتی مواجه شوید. برای دسترسی به مقادیر متغیرها (پروپرتیها) در یک کلاس پیاچپی، بهتر است از متدهای دریافتکننده یا همان Getter استفاده کنید.
به کد زیر توجه کنید تا آنچه گفته شد را بیشتر درک کنید.
کانستراکتورها (constructor)
در تمامی کلاسهای پیاچپی میتوان متدهایی موسوم به کانستراکتور را تعریف کرد که در واقع یک متد داخلی آن کلاس محسوب میشود. کانستراکتورها به شما اجازه میدهند تا خواص مورد نظر کلاس خود را تعریف کنید. بدین طریق به محض ساختن و فراخوانی چنین کلاسی، متد کانستراکتور آن کلاس به صورت خودکار اجرا خواهد شد.
نکته: اگر تابعی به نام ()constructــ در کلاس مورد نظرتان بسازید، پیاچپی به طور خودکار متد (تابع) ()constructــ را پس از ساختن هر شیء و در واقع پس از اجرای کلاس، فراخوانی میکند.
به یاد داشته باشید که برای تعریف کانستراکتور در ابتدای نام آن باید دو علامت آندراسکور (آندرلاین ــ) قرار دهید و بدون هیچ فاصله یا کاراکتر اضافهای، کلمهی construct را در ادامهی نام آن بنویسید. برای درک بیشتر موضوع، به کد زیر توجه کنید:
از حالا به بعد به منظور پیشبرد راحتتر و یکپارچهتر مبحث شیءگرایی در پیاچپی، هر جا صجبت از متد شد منظور ما تابع داخل کلاس اس و هرجا از پروپرتیها سخن گفتیم، منظور ما همان متغیرهای کلاس هستند.
از آنجا که قصد داریم شیءگرایی را به شما آموزش دهیم پس از همین حالا به بعد از واژگان این ساختار برنامهنویسی استفاده خواهیم کرد.
ساختن یک کلاس (شیء) مجهز به کانستراکتور
حالا که ما با نحوهی ساختن کانستراکتور آشنا شدهایم، میتوانیم برای ساخت کلاس person، مقداری را به عنوان پیشفرض برای پروپرتی name$ مشخص کنیم.
شما میتوانید ورودیهای مختلفی را به صورت آرگومان، برای متد کانستراکتور تعیین کنید. اگر با این موضوع آشنایی ندارید بد نیست سری به بخش آموزش توابع در پیاچپی بزنید که پیشتر آن را در زومیت منتشر کردهایم. برای افزودن ورودی به کانستراکتور، باید پس از استفاده از یک شیء ورودیها را در داخل پرانتز و پس از نام کلاس مورد نظر، وارد کنیم. به عنوان مثال به کد زیر توجه کنید:
استفاده از کانستراکتور و مقدار دهی ورودی مورد نیاز آن باعث شد تا دیگر نیازی به فراخوانی متد ()set_name نخواهیم داشت که همین کار باعث میشود با نوشتن کد کمتر، بتوان پروژههای مسنجمتری را ساخت. استفاده از کانستراکتورها همانند سایر زبانها نظیر جاوا و ... در بین برنامهنویسان این زبان، رایج است. باز هم توجه شما را به مثال زیر جلب میکنیم:
محدود کردن دسترسی به پروپرتیها با اصلاحکنندههای دسترسی
یکی از اصول بنیادی در برنامهنویسی شیءگرا، کپسولهسازی (encapsulation) است. اگر قصد دارید تا دسترسی به پروپرتیهای مختلف را در کلاس خود محدود کنید، این ایده به شما کمک میکند تا کد خواناتر و بهتری را تولید کنید.
برای محدود کردن دسترسی به پروپرتیهای کلاس خود، باید از اصلاحکنندههای دسترسی (ٰaccess modifiers) استفاده کنید. در پیاچپی نیز مثل بسیاری از زبانهای خانوادهی سی، ۳ عدد اصلاحکننده دسترسی موجود است:
اصلاحکنندهی پیشفرض برای هر پروپرتی در هر کلاس در پیاچپی، Public است. به مثال زیر توجه کنید:
محدود کردن دسترسی به پروپرتیها: بخش دوم
هنگامی که یک پروپرتی را در کلاسهای پیاچپی از نوع private تعیین کنیم، فقط برخی از کلاسهای دیگر میتوانند به مقدار این پروپرتی دسترسی داشته باشند.
هنگامی که یک پروپرتی را در کلاسهای پیاچپی از نوع protected تعیین کنیم، فقط برخی از کلاسهای مشتق شده از کلاس مورد نظر، امکان دسترسی به پروپرتی یاد شده را خواهند داشت. مشتق شدن و مباحث مربوط به ارثبری در کلاسهای پیاچپی را بعدا به شما آموزش خواهیم داد.
پروپرتیهایی که به صورت Public تعریف شده باشند، محدودیت دسترسی نداشته و این یعنی هر کسی و هر کلاسی میتواند به مقدار آنها دسترسی یابد.
به منظور فهم بیشتر این بخش تقریبا فرار از شیءگرایی در پیاچپی، کد زیر را به دقت مشاهده کرده و آن را خودتان نیز تمرین، تا نتیجه را مشاهده کنید. برای درک بهتر کدها، کامنتهای موجود در مثال زیر را نیز مطالعه کنید.
'Fatal error: Cannot access private property person::$pinn_number in ...'
محدود کردن دسترسی به متدها
درست همانند پروپرتیها، شما میتوانید دسترسی به متدهای تعریف شده در یک کلاس را با استفاده از ۳ اصلاحکننده زیر کنترل کنید.
به طور خلاصه: امکان کنترل کردن دسترسی به متدهای هر کلاس، باعث میشود تا بتوانیم روش استفادهی دیگران از آن کلاس را کنترل کنیم.
احتمالا شما هم متوجه شدهاید که استفاده از محدودکنندههای دسترسی و دیگر ساختارهای برنامهنویسی شیءگرا، کمی زیرکانه خواهد بود. این مورد برای افرادی که به تازگی شروع به یادگیری شیءگرایی کردهاند، بیشتر محسوس است. پس بهتر است شما نیز به خود شانسی بدهید و شروع به یادگیری و استفاده از این روش کنید.
با توجه به آنچه اشاره شد، باید بگوییم که ساختار یکپارچهی برنامه نویسی شیءگرا باعث میشود تا بتوان روی پروژههای موجود که با این روش ساخته شدهاند کار کرد یا پروژههای گروهی را به طور استانداردتر پیش برد. به کد زیر توجه کنید:
نکته اضافه: مجددا ذکر این مورد بسیار مهم است که بگوییم شما خودتان باید دست بکار شده و کدها را به طور عملی بنویسید و سپس آنها را تست کنید. این کار باعث میشود تا موضوع مورد بحث را بهتر درک کنید.
امیدواریم تا به اینجای مبحث، تمام مراحل را به ترتیبی که گفته شده فرا گرفته باشید.
آموزش PHP - جلسه اول معرفی و ابزارهای مورد نیاز | رفتن به مطلب | |
آموزش PHP - جلسه دوم، متغییرها و توضیحات در کدها | رفتن به مطلب | |
آموزش PHP - جلسه سوم: عملگرها | رفتن به مطلب | |
آموزش PHP - جلسه چهارم: آرایه ها | رفتن به مطلب | |
آموزش PHP - جلسه پنجم: عبارات شرطی، دستور if | رفتن به مطلب | |
آموزش PHP - جلسه ششم: حلقه های While و For | رفتن به مطلب | |
آموزش PHP - جلسه هفتم: دستور Switch و آشنایی با Include و Require | رفتن به مطلب | |
آموزش PHP - جلسه هشتم: توابع | رفتن به مطلب | |
آموزش PHP - جلسه نهم: متغیرهای پیش فرض و فرم ها | رفتن به مطلب | |
آموزش PHP - جلسه دهم: پروژه ارسال ایمیل | رفتن به مطلب | |
آموزش PHP - جلسه یازدهم: اتصال به بانک اطلاعاتی MySQL | رفتن به مطلب | |
آموزش PHP - جلسه دوازدهم: درج اطالاعات در بانک اطلاعاتی MySQL | رفتن به مطلب | |
آموزش PHP - جلسه سیزدهم: خواندن دادهها از بانک اطلاعاتی MySQL | رفتن به مطلب | |
آموزش PHP - جلسه چهاردهم: ویرایش داده در بانک اطلاعاتی MySQL | رفتن به مطلب | |
آموزش PHP - جلسه پانزدهم: حذف داده ها از بانک اطلاعاتی MySQL | رفتن به مطلب | |
آموزش PHP - جلسه شانزدهم: Session و Cookie | رفتن به مطلب | |
آموزش PHP - جلسه هفدهم: کار با فایل ها | رفتن به مطلب | |
آموزش PHP - جلسه هجدهم: کار با تاریخ و ساعت و تاریخ هجری شمسی | رفتن به مطلب | |
آموزش PHP - جلسه نوزدهم: فیلترهای پی اچ پی (مقدماتی) | رفتن به مطلب | |
آموزش PHP - جلسه بیستم: کار با رشته ها | رفتن به مطلب | |
آموزش PHP - جلسه بیست و یکم: شیء گرایی | رفتن به مطلب | |
آموزش PHP - جلسه بیست و دوم: شیء گرایی (بخش دوم) | رفتن به مطلب | |
آموزش PHP: جلسه بیست و سوم: شیءگرایی (بخش سوم) | رفتن به مطلب | |
آموزش PHP: جلسه بیست و چهارم: شیءگرایی (بخش پایانی) | رفتن به مطلب |