در ادامه سری آموزشهای پیاچپی در وبلاگ مهرآستان، حال به مرحلهای جدید از برنامهنویسی میپردازیم و در واقع قصد داریم وارد مباحث پیشرفته شویم. در این جلسه و چند جلسهی آینده، به مبحث شیءگرایی خواهیم پرداخت. در ادامه با ما همراه شوید.
شاید سختترین مرحله در تدریس و نیز فراگرفتن شیءگرایی در پیاچپی را بتوان پایه و اساس آن دانست. اما در صورتیکه شما اصل این مفاهیم پایه را بیاموزید، یادگیری ادامهی این مبحث بسیار آسان خواهد شد. در هرصورت جای نگرانی وجود ندارد و ما نیز در این آموزش از آسانترین راه موجود استفاده خواهیم کرد تا مفاهیم شیءگرایی (OOP) را بهطور کامل و صحیح یاد بگیرید.
به جای یادگیری تئوری که در اکثر آموزشها از آن استفاده شده، ما مستقیما مثل جلسات قبل شما را درگیر کدنویسی میکنیم تا همراه با یادگیری مطالب بتوانید کدهای موردنیاز را به صورت عملی نیز بنویسید. برای اینکه اشتیاق شما به مبحث شیءگرایی بیشتر شود جالب است بدانید که پس از یادگیری این بخش، برنامهنویسی به زبان پیاچپی برای شما بسیار لذتبخشتر و آسانتر و مسنجمتر خواهد شد. پس مثل همیشه برنامهی نوتپد پلاسپلاس را اجرا کنید و همزمان با توضیحاتی که میخوانید، کدهای موردنیاز را بنویسید.
مقدمه
با انتشار پنجمین نسخه از PHP در سال ۲۰۰۴، برنامهنویسان این زبان در نهایت امکان بهره بردن از قدرت برنامهنویسی شیءگرا را به دست آوردند. این همان قدرتی است که زبانهای دیگری چون جاوا و سی، آن را از قبل در اختیار توسعهدهندگان قرار داده بودند.
در این سری آموزشی قصد داریم تا به صورت گام به گام، شما را با نحوه ساختن اشیاء در پیاچپی و نیز استفاده کردن از آنها آشنا کنیم. تمام این کارها با قابلیتهای درونی OOP پیاچپی امکانپذیر هستند و نیاز به هیچ مورد اضافهی دیگری ندارید. در ادامه، خلاصهای از آنچه فرا خواهید گرفت را مشاهده میکنید.
- تفاوت بین ساخت یک اپلیکیشن پیاچپی با روش معمولی (قدیمی) و روش شیءگرا.
- اصول OOP چه هستند و چگونه از آنها در پیاچپی استفاده کنیم.
- چه زمانی از OOP در اسکریپتهای پیاچپی خود استفاده کنیم.
برخی از افراد هنگام برنامهنویسی بسیار سردرگم میشوند چرا که این برنامهنویسان احتمالا پایه و اساس مفاهیم را به خوبی یاد نگرفتهاند. همیشه به این نکته توجه داشته باشید که پایه و اساس هر کار، بخش مهمی از آن کار به حساب میآید. با در نظر گرفتن این نکات قصد داریم تا آرام آرام به یکی از کلیدیترین سردرگمیهایی که هنگام برنامهنویسی شیءگرا با PHP وجود دارد، بپردازیم. با یادگیری این نکات، میتوانید در آینده به خوبی در دنیای شیءگرایی فعالیت داشته باشید.
دقت داشته باشید که برای یادگیری مبحث OOP باید با مباحث پیشنیاز از جمله، توابع، متغیرها، دستورات شرطی و حلقهها آشنایی داشته باشید. اگر با این مباحث آشنا نیستید، به مطالب جلسات قبل مراجعه کنید. برای اینکه یادگیری OOP آسانتر شود قصد داریم تا این بخش را در ۲۲ مرحله به شما آموزش دهیم.
مرحله اول:
ایجاد فایلهای موردنیاز
پیش از هر چیز مثل همیشه نرمافزار Xampp را اجرا کرده و یک پوشه جدید در پوشهی htdocs بسازید. در این پوشه دو فایل جدید به نامهای index.php و class.php را نیز بسازید.
شیءگرایی (OOP) به معنای ساختن یک کد ماژولار است و بنابراین کدهای پیاچپی شیءگرایی که مینویسیم در فایلهای مخصوص به خود قرار داده میشوند و سپس در صفحات پیاچپی اصلی خود در مواقع نیاز از کدهای شیءگرای نوشته شده بهره میبریم. همانطور که در جلسات قبل نیز به شما آموزش دادیم، میتوان یک صفحهی پیاچپی را با دستور include به یک صفحهی دیگر پیاچپی اضافه کرد. حال در اینجا ما فایلهای شیءگرای نوشته شده را به صفحات اصلی پیاچپی خود اضافه خواهیم کرد.
محور اصلی برنامهنویسی شیءگرا بر ساختارهایی به نام کلاس (class) میچرخد. کلاسها قالبهای کلی برای تعریف اشیاء در برنامهنویسی شیءگرا هستند.
مرحله دوم:
ساختن یک کلاس پیاچپی در فایل class.php
به منظور طراحی اسکریپتهای پیاچپی خود به جای اینکه چندین تابع، متغیر و کدهای شناور مختلف داشته باشید، بهتر است کتابخانههای مخصوص به خود را با روش OOP ایجاد کرده و در واقع کلاسهای خودتان را تعریف کنید.
برای تعریف کلاس خود باید از کلمه کلیدی class استفاده کنیم و به دنبال آن نامی را که قصد داریم برای کلاس تعیین شود، مینویسیم. به مثال زیر دقت کنید.
<?php
class person {
}
?>
نکته: محتوای هر کلاس همانند ساختار توابع، با علامت آکولاد ( { } ) احاطه میشود.
مرحله سوم:
کلاسها را میتوان نقشههایی برای اشیاء پیاچپی دانست. یکی از بزرگترین تفاوتهایی که بین توابع و کلاسها وجود دارد این است که یک کلاس شامل دادهها (متغیرها) و توابع مختلف است. هر یک از توابع موجود در کلاس را یک شیء (object) مینامند.
هنگامی که شما بخواهید متغیرهای موردنظر خود را در داخل یک کلاس ایجاد کنید، به این متغیرها خاصیت یا ویژگی میگویند. به مثال زیر توجه کنید:
<?php
class person {
var $name;
}
?>
نکته: دادهها. متغیرهایی که در داخل یک کلاس تعریف شدهاند را خواص آن کلاس میگویند.
مرحله چهارم:
افزودن توابع/متدها به کلاس
همانطور که برای افزودن هر متغیر در هر کلاس، باید نام منحصر به فردی را برای آن انتخاب کنیم، برای تعریف کردن توابع نیز باید نامی منحصر به فرد را برای هر تابع انتخاب کنیم. مجددا یادآوری میکنیم که هرجا در کلاسهای پیاچپی صحبت از متدها شد منظور از هر متد همان تابع در کلاس است.
از متدهای یک کلاس به منظور اعمال تغییرات در دادهها و خواص (متغیرهای کلاس) استفاده میکنیم. به مثال زیر توجه کنید:
class person {
var $name;
function set_name($new_name) {
$this->name = $new_name;
}
function get_name() {
return $this->name;
}
}
?>
نکته: فراموش نکنید که در یک کلاس، متغیرها را Property (مشخصهها یا ویژگیها) مینامند و توابع نیز متدهای کلاس خوانده میشوند.
مرحله پنجم:
توابع ستکننده و دریافت کننده
ما دو تابع (متد) جالب را تعریف کردهایم. یکی get_name() و دیگری set_name().
این متدها از حالت کلی و رایج برنامهنویسی شیءگرا (OOP) پیروی میکنند و شما میتوانید این ویژگی را در سایر زبانهای برنامهنویسی که از شیءگرایی پشتیبانی میکنند (مثل جاوا و Ruby) نیز مشاهده کنید.
مورد دیگر اینکه توابع ستکننده و دریافتکننده باید با نام مشخصهای (متغیر) که قصد تغییر آن را دارند، نام یکسانی داشته باشند. به مثال زیر توجه کنید:
<?php
class person {
var $name;
function set_name($new_name) {
$this->name = $new_name;
}
function get_name() {
return $this->name;
}
}
?>
نکته: توجه داشته باشید که نام توابع ستکننده و دریافتکننده، باید با نام مشخصههای مرتبط با آنها یکسان باشد.
با استفاده از این روش، هنگامی که توسعهدهندگان پیاچپی بخواهند اشیاء شما را مورداستفاده قرار دهند، میدانند که اگر تابعی به نام یک متغیر درون کلاسی باشد، آن تابع یا متد به منظور اعمال تغییرات روی آن متغیر بهکار میرود.
در جلسات بعدی به ادامهی مبحث میپردازیم.