شی گرایی مفهوم بسیار قدرتمندی است که تقریبا در تمام زبان‌های برنامه نویسی مورد استفاده قرار گرفته و یادگیری آن برای تمام برنامه نویسان ضروری است.

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

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

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

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

برخی زبان‌ها مانند java و C# به گونه‌ای هستند که بدون شی گرایی اصلا نمی‌توان از آن‌ها استفاده کرد، ولی PHP اینگونه نیست و الزامی به کار با شی گرایی ندارید، ولی تقریبا هیچ پروژه مهمی بدون شی گرایی با PHP پیاده سازی نشده است.

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

پیش نیازهای این دوره

طبیعتا برای استفاده از این دوره باید با PHP آشنا باشید. در سایت هیتوس دوره‌ای برای این هدف در این آدرس برای شما کاربران عزیز ایجاد شده است.

Property و Method در شی گرایی

به صورت خلاصه نام متغیر درون کلاس را Property و نام تابع را Method می‌گویند.

کلاس‌ها در شی گرایی

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

در مثال زیر یک کلاس به نام Car را می‌بینید:

<?php

class Car{
	public $maxSpeed= 240;
	public $name;
	public function car_info(){
		return "The Name of This Car is ".$this->name." and his max speed is ".$this->maxSpeed."KM";
	}
}

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

این کلاس دو Property به نام‌های maxSpeed و name و یک متد با نام car_info دارد.

نکته: کلمه کلیدی public در واقع سطح دسترسی این Property و یا Method است که در قسمت بعد به این مبحث می‌پردازیم.

برای دسترسی به Property‌های کلاس درون آن کلاس از کلمه کلیدی $this و علامت -> استفاده می‌کنیم، و نیازی نیست قبل از نام Property از کاراکتر $ استفاده کنیم.

بهره برداری از یک کلاس زمانی شروع می‌شود که از آن یک شیء بسازیم. در پایین با دستور new یک شیء از روی Car می‌سازیم:

$BMW = new Car();

شیء فوق یک نمونه از Car است که BMW نام دارد.

به شکلی که در پایین می‌بینید مقدار سرعت شی BMW را در خروجی چاپ می‌کنیم:

class Car{
	public $maxSpeed= 240;
	public $name;
	public function car_info(){
		return "The Name of This Car is ".$this->name." and his max speed is ".$this->maxSpeed."KM";
	}
}

$BMW = new Car();
echo $BMW->maxSpeed;

برای درخواست Property‌های کلاس از علامت -> استفاده می‌کنیم، و نیازی نیست $ را قبل از آن ذکر کنیم.

خروجی دستورات فوق عدد 240 است، چون همانطور که می‌بینید مقدار maxSpeed در کلاس Car برابر 240 است.

 با دستور زیر به سادگی Property نام را مقدار دهی و سپس چاپ می‌کنیم:

$BMW = new Car();
$BMW->name= "BMW";
echo $BMW->name;

 خروجی دستور فوق BMW است.

متد car_info کلاس Car برای داشتن یک خروجی صحیح نیازمند مقدار دهی name است چون این Property در کلاس Car مقداری ندارد. مثال زیر را ببینید:

<?php
class Car{
	public $maxSpeed= 240;
	public $name;
	public function car_info(){
		return "The Name of This Car is ".$this->name." and his max speed is ".$this->maxSpeed."KM";
	}
}

$BMW = new Car();
$BMW->name= "BMW";
$BMW->maxSpeed= 280;
echo $BMW->car_info();
?>

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

The Name of This Car is BMW and his max speed is 280KM

در مثال فوق همانطور که می‌بینید مقدار maxSpeed عدد 280 است. این Property با وجود این که درون کلاس Car یک مقدار داشت ولی در این مثال ما این مقدار را به 280 تغییر دادیم.