آموزش شی گرایی در PHP – کلاس و آبجکت ها

  • آپدیت شده در تاریخ

آموزش شی گرایی در PHP

اولین قسمت آموزش شی گرایی در PHP را با مقدمات و همچنین کلاس و آبجکت ها شروع می کنیم.

برنامه نویسی شی گرا یا همان Object-Oriented یک سبک یا الگو نوشتن کدهاست که به توسعه دهنده ها اجازه می دهد تا بخش های مشابه به هم را در مفهومی به اسم کلاس (Class)، گروه بندی نمایند.

در واقع این گروه بندی به برنامه نویسان کمک خواهد کرد که به مفهوم DRY یا همان Don’t Repeat Yourself بیشتر نزدیک گردند، مضاف بر اینکه کدهای آن ها بسیار برای نگهداری و تغییر راحت تر خواهد بود. (Easy-to-Maintain).

یکی از مهم ترین مزیت های این سبک از کدنویسی، این می باشد که اگر قرار باشد تکه ای از داده های برنامه شما تغییر یابد، عموما لازم است فقط یک بخش در کدهای شما بروز رسانی گردد.

مهم ترین مزیت برنامه نویسی شی گرا که باعث شده است اکثر توسعه دهنده ها از آن استفاده کنند، شبیه سازی برنامه نویسی با مفاهیم دنیای واقعی است.

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

همین طور که می دانید، اطراف ما از اشیا (Object) مختلف تشکیل یافته است. هر کدام از آن ها خواصی (Property) دارند که آن را از شی مشابه خود، متفاوت می کنید. ضمن اینکه ارتباط بین اشیا با فرستادن پیام بین همدیگر برقرار می گردد.

هر شی می تواند رفتاری از خود بروز دهد که مختص همان شی می باشد. این مفاهیم باعث شد تا همه این ها در مفاهیم برنامه نویسی شی گرا استفاده شود.

در پروژه هایی با ابعاد بزرگ و پیچیده، مسلما باید از الگوهای شی گرا در برنامه نویسی استفاده کرد چرا که هم باعث کاهش پیچیدگی کدها در آینده خواهد شد و هم توسعه و عیب یابی آن به مراتب ساده تر از روش های برنامه نویسی رویه ای می باشد.

 

حالا که بصورت تئوری متوجه شدیم که شی گرایی چی هست و چرا باید به سمت شی گرایی در PHP بریم, شروع کنیم بصورت کاربردی نحوه کد زدن با آن را یاد بگیریم.

 

چطور یک کلاس (Class) بسازیم؟

برای ساخت یک کلاس، ما تمام کدهای مربوط به یک بخش را در یک جا قرار میدیم.

بطور مثال می توانیم تمام کدهای بخش کاربران یک وبلاگ در یک Class قرار بدیم، همه کدهای مربوط به انتشار پست های جدید در کلاس دیگر و همه کدهای مرتبط با بخش کامنت ها هم در کلاس سوم.

برای نامگذاری کلاس، از یک اسم لاتین با حرف اول بزرگ استفاده می کنیم. برای مثال، می توانیم تمام کدهای هندل بخش کاربران را در کلاس User قرار بدیم، بخش پست ها در کلاس Post و کامنت ها هم در کلاس Comment

 

در مثال زیر ما یک کلاس Car ایجاد کردیم که همه کدهای مربوط به ماشین ها رو داخلش قرار دادیم.

کلاس ها را با کلمه کلیدی class تعریف می کنیم و بنابر استاندارد موجود، حرف اول نام کلاس را بصورت حروف بزرگ قرار میدیم.

اگر نام کلاس بیشتر از یک کلمه بود از استاندارد upper camel case بهره می بریم. مثلا JapaneseCars, NetParadis, AmericanTour

من کلاس را که شامل کدهای ما هست داخل آکولاد {} میزاریم.

 

چطور خواص (properties) یک کلاس را تعریف کنیم؟

به متغییرهای تعریف شده در کلاس property می‎گیم. پراپرتی ها می توانند مقادیر رشته (string)، عددی(integer)، بولین(true/false) و دگیر مقادیر متغییرها رو بگیرید.

حالا چندتا خاصیت رو به کلاس Car اضافه می کنیم.

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

استاندارد نامگذاری متغییرها با حروف کوچک شروع می شود.

اگر نام بیشتر از یک کلمه بود، همه کلمات بجز کلمه اول با حروف اول بزرگ هستند. مثلا $color, $hasSunRoof

هر خاصیت می تواند مقداری پیش فرض بگیرد مثلا $color = “red” یا اینکه مثل $comp در مثال بالا هیچ مقدار پیش فرضی نداشته باشند.

 

چطور از کلاس یک آبجکت بسازیم؟

می توانیم از یک کلاس یکسان چندین آبجکت بسازیم که مقادیر property خاص خود را داشته باشد.

برای کار با کلاس ها ما نیاز به ساخت object از آن هستیم و برای اینکار ما از کلمه کلیدی new استفاده می کنیم.

آبجکت $bmw را با کلمه کلیدی new از کلاس Car ساختیم.

به روند ساخت شی (object) از کلاس را نمونه سازی (instantiation) می گیم.

 

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

در واقع می توانیم چند شی متفاوت از یک کلاس بسازیم و بعد به هر کدام مقادیر متفاوتی از property ها رو بدیم.

 

آبجکت ها به چه دردی می‎خورند؟

در سبک برنامه نویسی رویه ای (procedural)، همه توابع و متغییرها در اسکوپ همگانی (global scope) قرار دارند و می توان فقط با زدن نامشان فراخوانی کرد ولی با استفاده از کلاس ها همه چیز داخل همان کلاس قرار دارد و از اسکوپ همگانی مخفی است.

به این دلیل که کدهای داخل اسکوپ کلاس، کپسوله شدند و خارج از آن قابل دسترس نیست.

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

آموزش شی گرایی در php

از کلاس Car ما انواع آبجکت هایی با نام های Mercedes, Bmw, Audi ساختیم.

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

برای مثال، در عکس بالا، هر کدام از ماشین ها رنگ های مختلفی دارند.

یک کلاس همه پراپرتی ها و متدهای خود را با تمام آبجکت هایی که ازش ساخته می شوند به اشتراک می گذارد.

اگرچه آبجکت ها از کد یکسان استفاده می کنند ولی به دلیل اینکه هر کدام ورودی متفاوتی می گیرند ممکن است خروجی مختلفی هم داشته باشند.

 

چطور خاصیت های آبجکت را دریافت کنیم.

همین‎که یک آبجکت را ساختیم، می توانیم خاصیت (property) آن را بگیریم. برای مثال :

برای گرفتن پراپرتی کافیه نام متغییر آبجکت را به همراه علامت دش و بزرگت از (->) و بعد نام پراپرتی تایپ کنیم.

توجه کنید نام property با $ شروع نمی شود و فقط نام آبجکت را با $ می نویسیم.

خروجی :

Red

Red

 

چطور مقادیر خاصیت شی را ست کنیم؟

برای این کار کافی هست مثل همان روش دریافت مقدار عمل کنیم و در آخر با مساوی مقدار جدید را ست کنید :

همینکه مقدار پراپرتی را ست کردید می توانید با کد زیر مقدار ست شده را دریافت کنید :

چطور متد جدید به کلاس اضافه کنیم؟

بیشتر کلاس ها شامل توابعی هستند که داخل کلاس به آنها متد(method) می گیم.

در کد زیر متد hello() را با پیشوند public و کلمه کلیدی function تعریف کردیم.

بعد ساخت شی برای دسترسی به متد می توانیم مثل خاصیت ها (property) عمل کنیم

خروجی

beep
beep

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

 

جمع بندی

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

در آموزش بعدی، در مورد کلمه کلیدی $this که به ما اجازه استفاده از خاصیت و متدها داخل خود کلاس را می دهد، صحبت می کنیم.

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

هر سوال یا مشکلی داشتید در بخش نظرات همین پست ارسال کنید، سریعا بررسی و راهنمایی می شود.

موفق و پیروز باشید.

حسن شفیعی توسعه دهنده وب و موبایل مدیر سایت علاقه خاصی به برنامه نویسی وب و موبایل دارم و هر روز تلاش می کنم به این حوزه مسلط تر شوم و اطلاعاتم را به شکل کاربردی برای علاقه مندان در وب به اشتراک بگذارم. اگر نیاز به برنامه نویس برای انجام پروژه و نوشتن اسکریپت های سمت وب, اپلیکیشن های اندروید و ios, پیدا کردن راه حل توسعه و غیره داشتید حتما از طریق تماس با ما/ واتساپ/ تلگرام بهم پیام بدید. برایتهیه هاست مطمین و پرسرعت کلیک کنید
مطالب زیر را حتما بخوانید
دیدگاه کاربران

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

دوره های آموزشی