آموزش شی گرایی در php
یکی از قابلیت های مهم زبان php، پشتیبانی از برنامه نویسی شی گرا یا object oriented programming می باشد. در این نوشته قصد داریم آموزش شی گرایی در php را به صورت کامل ارائه دهیم.
آشنایی با مفهوم شی گرایی در php برای هر برنامه نویس php لازم می باشد. به این دلیل که روش های قبلی برنامه نویسی php در حال منسوخ شدن هستند.
اصولا در برنامه نویسی شی گرا چهار اصل اساسی وجود دارد:
- کلاس (class)
- ویژگی (property)
- متد (method)
- شی (object)
تعریف کلاس (class)
در برنامه نویسی شی گرا، اصلی ترین چیزها را به عنوان شی در نظر می گیریم.
مثلا در یک سایت فروشگاهی، کاربر، محصول، سبد خرید، کد تخفیف و …، هر کدام به عنوان یک شی در نظر گرفته می شود.
برای هر شی باید یک کلاس خاص تعریف کنیم.
class User { //statements }
در مثال بالا، برای شی کاربر، یک کلاس با نام User ایجاد کردیم.
همانطور که مشاهده کردیم، کلاس با کیورد class ساخته می شود.
سپس نام کلاس ما می آید و بعد از آن یک آکولاد باز و بسته قرار می دهیم تا دستورات کلاس در آن قرار گیرد.
برای نامگذاری کلاس ها لازم است قوانین نامگذاری کلاس ها در php را رعایت کنیم.
ساختن شی (object) از کلاس
کلاس تعریف شده به خودی خود کاری نمی کند. دقیقا مانند تابع.
برای اینکه بتوانیم دستورات یک کلاس را اجرا کنیم، لازم است یک نسخه واقعی از آن را داشته باشیم.
مثلا فرض کنید که یک ساختمان دارای یک نقشه است که بخش های آن را نشان می دهد. خود نقشه به خودی خود ساختمان نیست. بلکه چیزی که از روی آن و در فضای واقعی میسازیم، ساختمان است.
کلاس هم یک نقشه است و وجود واقعی ندارد. باید یک نمونه واقعی یا اصطلاحا یک شی (object) از آن بسازیم.
سپس می توانیم با استفاده از آن شی، به جزئیات و محتویات آن کلاس دسترسی داشته باشیم.
برای ساختن شی از یک کلاس، از کیورد new استفاده می کنیم:
class Foo { //statement } $object = new Foo();
ویژگی یا property در کلاس
به هر متغیری که در کلاس تعریف می کنیم، ویژگی یا property کلاس می گوییم.
مانند توابع، در کلاس ها نیز به متغیرها نیاز داریم تا اطلاعاتی را در آن ها ذخیره کرده و در طول اجرای برنامه استفاده نماییم.
class Foo { public $size = 25; }
در کد بالا، ویژگی size را تعریف کرده و مقدار آن را برابر 25 قرار دادیم.
متد یا method در کلاس
به هر تابعی که در کلاس تعریف می کنیم، متد یا method کلاس می گوییم.
متدها محل پردازش دستورات موجود در کلاس هستند.
class Foo { function plus_one($x) { return ++$x; } }
مشاهده می کنید که در کلاس بالا، متد plus_one را تعریف کردیم که مقدار گرفته شده را یک واحد بیشتر کرده و بر می گرداند.
ثابت یا constant در کلاس
کلاس ها می توانند ثابت داشته باشند. اگر مقادیری داریم که می خواهیم مقدار آنها در طول کلاس تغییر نکند و ثابت باشد، از ثابت یا constant استفاده می کنیم.
class Foo { const RGB = '(255,255,255)'; }
مشاهده می کنید که ثابت با کیورد const ساخته می شود.
نکته: امکان تغییر مقدار یک ثابت در طول کلاس وجود ندارد.
ارث بری یا inheritance در شی گرایی
یکی از کاربردی ترین مفاهیم شی گرایی، مفهوم ارث بری یا inheritance می باشد. این مفهوم به ما کمک می کند تا کلاس های فرزند ایجاد کنیم و اطلاعات مشترک شامل ویژگی ها، متدها و ثابتها را در کلاس والد قرار دهیم.
class Biawp { public $color = '#000fff'; } class Wp extends Biawp { function show_name_wp() { return $this->color; } } $object = new Wp; echo $object->show_name_wp(); //output: Biawp.ir
برای آشنایی کامل با این مفهوم، به مقاله ارث بری یا inheritance در شی گرایی مراجعه نمایید.
متد سازنده یا constructor در کلاس
یک کلاس با استفاده از متد سازنده یا متد construct__ می تواند در هنگام تعریف شی از کلاس، عملیات مشخصی را به صورت خودکار انجام دهد. مثلا به یک متغیر، مقدار داده شود و یا یک تابع اجرا گردد:
class Foo { public $appName; function __construct($appName) { $this->appName = $appName; } function show_appName(){ return $this->appName; } } $object = new Foo('Biawp.ir'); echo $object->show_appName(); //output: Biawp.ir