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

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

در این مقاله قصد داریم تا اصطلاحات کلی در رابطه با شی گرایی در زبان پی اچ پی را بررسی کنیم. مفاهیمی که در این جلسه بررسی می کنیم :

  • ساخت کلاس (کلمه کلیدی class)
  • ساخت شی از روی کلاس (کلمه کلیدی new)
  • متغیر ها یا ویژگی ها (Attrubute)
  • متد ها (methods)
  • انواع متغیر کلاس (static , const)
  • انواع متد کلاس (constructor , destructor , static)

ساختار شی گرایی می تونه کمک شایانی در پیاده سازی داده ها در پروژه هایمان به ما بکنه . همچنین در ساختار های برنامه نویسی MVC و HMVC هم بهتره که از شی گرایی استفاده بشه.

در تفکر برنامه نویسی شی گرایی ما قصد داریم تا با اجزای برنامه خودمون مثل اشیا در دنیای واقعی برخورد کنیم. به طور مثال یک شی مثل ماشین یا انسان . خوب گاها ما اشیا دنیای واقعی رو در برنامه خودمون جای نمیدیم ، شاید شی ماشین یا انسان در برنامه ما جایی نداشته باشند. چند نمونه از اشیایی که ممکنه ما در برنامه هامون ازشون استفاده کنیم به شرح زیر می باشند:

  • پست ها در مقالات (هر پست یک شی از کلاس پست)
  • مستندات (مثلا شی رزومه از کلاس مستندات)
  • سیستم تایید هویت
  • محصولات (مثلا محصول x از کلاس محصولات)
  • سیستم تولید کننده پسوود (password generator)

نکته :‌ دقت داشته باشید انتخاب ماهیت کلاس از داخل داده های برنامتون خیلی مهمه.

در حالت کلی می تونیم کلاس رو به یک کاربن تشبیه کنیم.

تعریف کلاس در پی اچ پی

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

اجزای تشکیل دهنده یک کلاس در پی اچ پی

ویژگی یا Attribute : متغیر های کلاس که در تمام کلاس قابل دسترسی هستند.

متد یا method : همون توابع کلاس که انواع مختلفی می تونند داشته باشند از قبیل constructor , destructor

مثال کلاس پست :

ساخت شی از روی کلاس با کلمه کلیدی new

مثال :

متد های constructor و destructor

متد سازنده یا __construct : این متد زمانی که شی ساخته می شود فراخوانی می شود.

متد ازبین رونده یا __destruct : این متد زمانی که شی از بین می رود فراخوانی می شود.

سازنده می تونه با آرگومان ورودی باشه یا بدون آرگومان.

نکته : در سازنده با آرگومان ، ورودی های سازنده در زمان ساخت شی به کلاس داده می شود

متد های static در کلاس

اگر قصد داشته باشید تا در کلاستون متدی تعریف کنید که بدون ساخت شی در خارج کلاس قابل استفاده باشه اون رو static تعریف کنید.

متدهای استاتیک یه جورایی مثل تابع معمولی میمونه . یعنی چه شما تابعی تعریف کنید با نام custome_excerpt و یا این که کلاسی تعریف کنید و تابع custom_excerpt رو بهش به صورت static تحویل بدید.(البته از نظر تخصیص حافظه و  روال اجرا متفاوت هستند.)

متدهای static به ازای تمامی اشیا یکتا هستند.

متدهای استاتیک با استفاده از کلمه کلیدی static تعریف میشن.

خوب متد بالا رو به صورت static تعریف کردیم که بتونیم خارج کلاس بدون استفاده از شی از اون استفاده کنیم. نحوه فراخوانی اگر خارج از کلاس باشه با استفاده از نام کلاس است و اگر داخل کلاس باشه با استفاده از کلمه کلیدی self::

نکته : اگر از کلمه کلیدی $this در متد استاتیک استفاده کنیم Fatal Error می گیریم.

فراخوانی در داخل کلاس (مثلا داخل یه متد دیگه) :

نکته : در داخل متد استاتیک نمیشه از $this استفاده کرد. پس برای استفاده از متد های غیر استاتیک در داخل متد استاتیک باید حتما یک شی از کلاس جاری بگیریم.

در داخل متد های استاتیک با استفاده از self:: می تونید به سایر متد های استاتیک کلاس جاری دست پیدا کنید.

نتیجه گیری : پس کلا برای دستیابی به متد یا متغیر غیر استاتیک نیاز به یک شی داریم حال این شی می تونه  باشه یا شی instance گرفته شده باشه . دقت داشته باشید که در داخل متد های استاتیک در داخل متد استاتیک نمیشه از $this استفاده کرد ولی میشه از شی جاری instance گرفت.

متغیر های static در کلاس

این نوع متغیر ها هم خارج از کلاس به وسیله نام کلاس قابل دسترسی هستند.

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

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

نحوه استفاده از متغیر static نیز مانند متد های استاتیک است (خارج کلاس با نام کلاس و داخل کلاس با استفاده از کلمه کلیدی self::)

نکته : دقت داشته باشید که علامت $ در زمان استفاده از متغیر static در داخل و خارج کلاس استفاده می شود.

متغیر const در کلاس

متغیر const هم مثل static هست با این تفاوت که غیر قابل تغییر است.

نحوه فراخوانی متغیر از نوع const دقیقا مثل متغیر از نوع static است (خارج کلاس با نام کلاس و داخل کلاس با استفاده از کلمه کلیدی self::) اگر مقدار متغیر const رو تغییر بدید به شما خطا میده .(چه داخل کلاس چه خارج کلاس)

نکته : دسترسی به سایر المان های کلاس (غیر static) با -> انجام می شود.حال اگر از طریق شی خارجی کلاس باشد با استفاده از نام شی و اگر در داخل کلاس باشد با کلمه کلیدی this

 

 

مطالب مشابه

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

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

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

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

Cookie و Session در php

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

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

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

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

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

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

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

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

پاسخ دهید

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