لوگوی وبسایت
تمام آموزش های وبسایت رایگان می باشد ، پس از صفحات مختلف سایت دیدن فرمایید .

شروع برنامه نویسی شی گرایی در php – کلاس ، اشیا و متد ها

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

آشنایی با مفهوم شی گرایی – Object Oriented Programming

شی گرایی یک استایل کد نویسی می باشد که در آن فعالیت های مشابه را در قالب کلاس ها گروه بندی میکنیم و باعث کم حجم شدن و سریع شدن کد می شود و از کد نویسی اضافه جلوگیری میکند . یعنی دیگر کار های تکراری را لازم نیست چندین بار انجام دهیم . ( Don’t repeat yourself )

یکی از خصوصیت های برنامه نویسی با روش DRY این است که برای اعمال تغییر در یک بخش از نرم افزار لازم نیست تمام بخش های مختلف کد را تغییر دهیم بلکه تنها بخشی را تغییر میدهیم که بقیه از آن استفاده میکنند .

بگذارید یک مثال بزنم :

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

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

آشنایی با اشیا و کلاس ها در برنامه نویسی شی گرای PHP

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

یک انسان را در نظر بگیرید . کلاس ها شمای کلی انسان ( مانند ساختار های استخوانی و … )‌را تشکیل میدهند و اشیا در اصل خود انسان ها هستند که طبق کلاس ها ساخته شده اند .

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

ساختار کلاس ها ( class‌) در برنامه نویسی PHP

ساختار املایی یک کلاس بسیار ساده می باشد . ابتدا با استفاده از کلمه کلیدی class تعریف میکنیم که ما در حال ساخت یک کلاس هستیم ، سپس نام کلاس با می آوریم و بعد از آن {} که به زودی متد ها و خصوصیات کلاس در آن قرار میگیرند .

ما کلاس را تعریف کرده ایم و مانند توابع زمانی که بخواهیم از آن ها استفاده کنیم باید آن ها را صدا بزنیم . برای این کار از new استفاده میکنیم و کلاس ساخته شده ( شی )‌ را در یک متغیر ذخیره میکنیم .

خروجی مانند شکل زیر خواهد بود‌:

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

تعریف خصوصیات کلاس ها

زمانی که ما بخواهیم یک سری اطلاعات را در کلاس ها ذخیره نماییم از خواص کلاس ها ( properties ) استفاده میکنیم .

این خواص مانند متغیر های معمولی هستند اما تعریف آن ها یک تفاوت های جزئی ایی دارد .

به نمونه زیر توجه بفرمایید :

خروجی به شکل زیر خواهد بود :

کلمه کلیدی public که قبل از تعریف خصوصیت آمده است تعیین دسترسی به متغیر می باشد که جلوتر درباره آن توضیح خواهم داد .

همانطور که دیدید ما مانند متغیر های معمولی خصوصیت siteAddress را برای کلاسمان تعریف کردیم که در var_dump هم نمایش داده شد .

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

این کد خصوصیت siteAddress را که در شی mhrDev هست به ما نمایش میدهد .

عبارت –> در شی گرایی یک ساختار از پیش ساخته شده است که به وصیله ی آن به متد ها و خواص اشیا دسترسی خواهیم داشت .

در کد بالا توجه کنید که siteAddress بدون $ می باشد .

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

تعریف متد ها برای کلاس ها

متد ها ، توابعی مخصوص کلاس ها می باشند که به وسیله ی آن ها می توانیم عملیات های مد نظرمان را انجام دهیم و به خواص و دیگر متد های کلاس دسترسی داشته باشیم .

برای مثال :

در php ما میتوانیم با استفاده از متغیر از پیش ساخته شده ی $this به متد ها و خواص کلاس ها دسترسی داشته باشیم .

برای مثال در کد بالا با استفاده از $this->siteAddress توانستیم به siteAddress ایی که تعریف کرده بودیم دسترسی پیدا کنیم .

حالا میتوانیم در شی ساخته شده مان متد ها را صدا بزنیم تا عملیات ها را انجام دهند :

قدرت شی گرایی در این است که ما فقط یک بار یک کلاس را مینویسیم در حالی که میتوانیم به هر مقداری که میخواهیم آبجکت طبق این کلاس ها بسازیم در حالی که آبجکت ها مجزا از هم هستند (‌که اگر از شی گرایی استفاده نمیکردیم کد نویسی ما ۲ برابر میشد !‌)

متدهای جادویی در کلاس ها !

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

این کد ها باعث کم شدن کد ها و همچنین راحتی کار توسعه دهنده ها میشوند و قطعا در بسیاری از پروژه ها از آنها استفاده خواهید کرد .

متد سازنده  ( constructor )

فرض کنید بخواهید زمانی که از یک کلاس یک آبجکت می سازیم ، یک سری عملیات انجام بدهیم . برای این کار از متد __construct() استفاده خواهیم کرد .

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

خروجی کد بالا به شکل زیر است :

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

متد نابود کننده ! ( __destruct )

زمانی که شی ما از بین برود ( پس از پایان اجرای کد های PHP و یا هنگام unset کردن ) این متد به صورت اتوماتیک فراخوانی می شود .

می توانید در این متد عملیات هایی مانند fclose و … را انجام دهید .

تبدیل یک کلاس به متن !

کد زیر را اجرا کنید :

این کد با خطای زیر مواجه خواهد شد :

خوب php حق دارد ! ما میخواهیم یک شی را به حالت string نمایش دهیم . خوب بهتر است در کلاس ما یک جایگزین برای کلاس در حالت string تعریف کنیم . ( مانند __str__ در پایتون )

برای این کار از متد جادویی __toString استفاده میکنیم .

این متد باید حتما یک متغیر که رشته می باشد را return کند . این خروجی نمایش داده خواهد شد .

 

برای قسمت اول تا این بخش کافی هست . در بخش بعدی با وراثت کلاس ها و … ادامه خواهیم داد .

 

بر چسب های پست : , , , , , , , , , ,
مطالب مرتبط
شاید شما هم بخواهید آدرس های خوانا و زیبایی برای سایتتان ایجاد کنید . و قطعا طی ...
۲۳ اردیبهشت ۹۵
1 دیدگاه
سلام دوستان . امیدوارم خسته نباشید . در این آموزش قرار است با PHPDoc به عنوان مغ ...
۰۹ اردیبهشت ۹۵
0 دیدگاه
سلام دوستان . در قسمت قبلی با کلاس ها ،‌اشیا ، خواص و متد ها آشنا شدیم و در این ...
۰۳ اردیبهشت ۹۵
2 دیدگاه
1 دیدگاه برای “شروع برنامه نویسی شی گرایی در php – کلاس ، اشیا و متد ها”
  1. erfanhakimi گفت:

    سلام ایکاش اینم به صورت فایل pdf در میاوردید
    ممنون از سایت خوبتون

پاسخ دهید

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

ورود به حساب کاربری
بستن این پنجره