عنوان مقاله :

برنامه نویسی شی گرا در php | قسمت اول

گردآوری و تالیف : حسام موسوی
تاریخ انتشار : 27 شهریور 1394
دسته بندی ها : برنامه نویسی

سلام خدمت کاربران عزیز وب سایت راکت در این پست و پست های دیگه ای که قرار هر چند وقت یکبار در سایت قرار بدم قصد دارم تا شی گرائی در php یا حداقل مفهوم و روش کار این نوع برنامه نویسی در php رو به شما معرفی کنم و در کنارش این مفهوم رو بهتون آموزش بدم . امیدوارم مورد قبولتون قرار بگیره . قبل از اینکه بریم سراغ این مفهوم بزارید اصلا دلیل استفاده از این روش رو براتون توضیح بدم .

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

در گذشته قبل از اینکه مفهومم شی گرایی وارد زبان php بشه برنامه نویس ها مجبور بودن که php رو در کنار html استفاده کنن که این روش در پروژهای کوچیک مشکل بزرگی محسوب نمی شد اما زمانی که صحبت از ساخت برنامه های متوسط و بزرگ به میون می اومد کار یکم سخت میشد چون اینطور برنامه نویسی هر چقدر هم مدیریت شده باشه دارای کد نویسی اسپاگتی و کثیفیه که مدیریت و توسعه اش به نسبت زمانی که با استفاده از مفهوم شی گرایی برنامه نویسی میکنید خیلی دشوارتر میکنه . 

یک مثال از php بطور معمولی : 

<?php

	// Connect to Database

?>

<!DOCTYPE html>
<html>
<head>
	<title>Document</title>
</head>
<body>

</body>
</html>

شی گرایی یا به اختصار oop که کوتاه شده ای (Object-Oriented Programming) برنامه نویسی شی گرای به شما اجازه میده در کدهای خودتون تقسیم بندی های متفاوتی انجام بدید و کدهای php و html رو تا حد زیادی از هم جدا کنید و همین باعث میشه تا مدیریت روی کدهای php تون فوق العاده بالا بره . البته خیلی دلایل دیگه وجود داره که نمیخوام با این دلایل سرتون رو درد بیارم ، بزارید بریم سراغ توضیح مفهوم oop . 

اصل برنامه نویسی oop سعی داره تا دنیایی واقعی رو براتون شبیه سازی کنه. یعنی هر چیزی که شما در دونیای اطرفاتون میبینید رو میتونید به این مفهوم ارتباط بدید و بسازید . من خودم اینطوری با مفهوم oop آشنا شدم (با یک مثال) اینجا براتون توضیح میدم امیدوارم به شما هم کمک کنه .

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

کلاس ها و شی ها 

در شی گرایی دو مفهوم مهم ابتدایی و پایه وجود داره . کلاس ها و شی ها . یک کلاس (class) دقیقا مثل همون نقشه ای میمونه که باهاش خونه ای رو میشه ساخت ، نقشه ای که از کنار هم قرار دادن اجزایی متفاوتی ساخته میشه . این اجزا همون کلاس ها هستند مثل چی ؟ مثل کلاس در ، پنجره ، سیم و ... . که هر کدوم دارای ویژگی های مخصوص بخودشون هستند . که با ترکیب اینها با هم یک خونه ساخته میشه . 

و یک شی (object)  مثل یک خونه ای واقعیه که از روی نقشه آماده شده ساخته میشه . یعنی دقیقا اول نقشه با استفاده از کلاس ها یا همون اجزایی مثل در ، پنجره ، سیم ، بتن و .. که هر کدوم برای خودشون کلاسی هستن بهم متصل و آماده میشن بعد با استفاده از اون نقشه خونه واقعی ساخته میشه . 

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

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

ساختار کلاس ها

در php یک کلاس با کلمه کلیدی (class) بوجود میاد و با یک اسپیس و تایپ یک اسم شما اسم اون کلاس رو تعریف میکنید و در نهایت با قرار دادن براکت های باز و بسته ( { } ) کار یک class رو شروع میکنید . دقیقا مثل مثال زیر :

<?php

class MyClass
{
  // class propertys and methods go here;
}

?>

بعد از به وجود آوردن کلاس ما با استفاده از کلمه کلیدی new می تونیم از اون کلاس استفاده کنیم و یک شی (object) با همون کلاس بسازیم . در زیر میتونید این روش رو ببینید :

$obj = new MyClass;

شما با قرار دادن شی (obj$) در داخل var_dump میتونید محتوای کلاس رو مشاهده کنید .

var_dump($obj)

و اگر این کدها رو در داخل فایلی برای test کردن قرار بدید و فایل رو اجرا کنید نتیجه زیر رو مشاهده خواهید کرد . 

object(MyClass)#1 (0) { }

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

مقالات پیشنهادی

پی اچ پی 7.1 و ویژگی های جدید

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

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

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

جدیدترن ابزار طراحی و برنامه نویسی وب - مهر 94

تحولات دیگه بصورت گذشته هر سال یا هر ماه اتفاق نمیوفته بلکه بصورت لحظه ای همه چی متحول میشه این قانون بر اینترنت و طراحی و برنامه نویسی وب هم حکم میکن...

برنامه نویسی شی گرا در php | قسمت اول

در گذشته قبل از اینکه مفهومم شی گرایی وارد زبان php بشه برنامه نویس ها مجبور بودن که php رو در کنار html استفاده کنن که این روش در پروژهای کوچیک مشکل...

دیدگاه های ارزشمند شما

امیرعلی | 5 ماه پیش

سلام آقای موسوی
فقط یه سوال دارم که ذهنمو آشفته کرده!
ما اومدیم از توابع در برنامه نویسی مون استفاده کردیم تا بهینه تر کدنویسی کنیم، تداخل کمتری با html داشته باشیم و حتی میتونیم از توابع تودر تو هم استفاده کنیم. کلی زمانمون صرفه جویی میشه و هرجا نیاز بود تابع رو فراخوانی میکنیمو باهاش حال میکنیم.
حالا شما میگی کلاس هم همین مزایا رو داره پس تفاوت تابع با کلاس چیه دقیقا؟!
(از احاظ ساختاری توجیه هستم اما از نظر ذاتی هر دو مزایای مشترکی دارن و این گیج کنندس!!!)

jahan | 1 سال پیش

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

نبیل امیری | 2 سال پیش

واقعاآموزش هاتون بی نظیره مخصوصا مثال های خوب تون که برای همیشه توذهن آدم میمونه ازبرداشت که نسبت به یادگیری اون زبان داره . بازم ممنون

admin | 2 سال پیش

خواهش میکنم انشالله که جوری پیش بریم که همیشه از ما راضی باشید .

معین | 2 سال پیش

خیلی عالی بود، بی صبرانه منتظر آموزش های بعدی مبحث OOP هستم، با تشکر از زحمات شما

admin | 2 سال پیش

ممنون بابت دلگرمیتون ، امیدوارم قسمت های دیگه هم مورد استفاده تون قرار بگیره

علی | 2 سال پیش

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

admin | 2 سال پیش

ممنون از دلگرمیتون ، بله دوره oop هم بطور کاملا رایگان برگزار میشه برای کاربرای راکت