جلسه یازدهم PHP : آموزش کامل زبان برنامه نویسی پی اچ پی مقدماتی تا پیشرفته (جلسه اول شی گرایی در پی اچ پی)
در این مقاله از آموزش PHP با جلسه یازدهم PHP در خدمت شما هستیم. در قسمت قبل، در آخرین جلسه از PHP مقدماتی، مبحث فرمها در PHP را مطرح نمودیم. و تفاوت دو متد GET و POST را در فرم PHP بررسی نمودیم. سپس مبحث اعتبارسنجی فرم در PHP را بیان کردیم. در این جلسه از کدپز با آموزش شی گرایی ( OOP ) در PHP در خدمت شما هستیم. توجه داشته باشید که مبحث شی گرایی را در 3 جلسه آموزش خواهیم داد. جلسه اول شی گرایی ، جلسه دوم شی گرایی ، جلسه سوم شی گرایی
فهرست مطالب
- مفهوم شی گرایی
- اصطلاحات شی گرایی
2.1. کلاس (class)
2.2. شی (object)
2.3. ویژگی (property)
2.4. صفت (attribute)
2.5. روش (method)
2.6. ارث بری (inheritance)
2.7. کلاس پدر (parent class)
2.8. کلاس فرزند (child class)
2.9. چند ریختی (polymorphism) - سینتکس کلاس در شی گرایی PHP
- ساخت شی ها در PHP
- فراخوانی تابع عضو
مفهوم شی گرایی و کلاس :
ما میتوانیم جهان را ساختهشده از چیزهای مختلفی مانند خورشید، زمین، ماه و … تصور کنیم. بهطور مثال یک اتومبیل را فرض کنید که از چیزهای مختلفی مانند چرخ، فرمان، دنده و غیره تشکیلشده است. بهطور مشابه مفاهیم برنامه نویسی شی گرایی وجود دارند، که در ادامه به توضیح بیشتر در رابطه با آنها خواهیم پرداخت. شکل زیر از جلسه یازدهم PHP را در نظر بگیرید که مفهوم کلاس و شی در شی گرایی را نشان میدهد.
اگر بخواهیم مثالی از دنیای واقعی بیان کنیم فرض کنید، خودروها میتوانند یک کلاس (class) باشند. حال، از کلاس خودروها چندین خودرو با نامهای متفاوت بهعنوان (object) میسازیم. مثلاً از کلاس خودروها شیهای Audi، Volvo و Nissan را میتوانیم داشته باشیم.
چند مثال دیگر
- مثال ساختمانها: در این مثال میتوانیم تمامی ساختمانها را یک کلاس (class) فرض کنیم. حال ساختمان پلاسکو در تهران یک شی (object) از کلاس ساختمانها میباشد.
- مثال کامپیوترها: در این مثال میتوانیم تمامی سیستمها مانند ابرکامپیوترها، سیستمهای خانگی و لپ تاپ ها را به عنوان کلاس کامپیوترها بشناسیم. و حال سیستم شخصی شما که در حال یادگیری PHP میباشید، یک شی از کلاس کامپیوترها میباشد.
- مثال انسان ها: خود ِ انسان را کلاس در نظر بگیرید. حال شخص ِ خود شما یک شی (object) از کلاس انسان هستید.
امیدوارم مطلب کلاس و شی به خوبی روشن شدهباشد. چند مطلب دیگر هم وجود دارند که در ادامه آنها را بررسی خواهیم کرد.
اصطلاحات شی گرایی
در این بخش از جلسه یازدهم PHP ، به طور کلی تمامی اصطلاحات مربوط به برنامه نویسی شی گرا را تعریف کنیم. در این تعاریف کلاس انسان را در نظر میگیریم.
کلاس (class)
به مجموعهای از اشیا که دارای ویژگی و رفتار (متد) مشترک میباشند، کلاس گویند. کلاس ماشین، کلاس دانشجو و یا کلاس انسان
شی (object)
ما کلاس را یک بار تعریف میکنیم و سپس بسیاری از اشیاء که متعلق به آن کلاس هستند را ایجاد میکنیم. هر شی بیانگر یک «حالت» یا یک «نمونه» (Instance) از کلاس خود است. برای مثال، من و شما نمونهای از کلاس انسان هستیم.
ویژگی (property)
هر کلاس یکسری ویژگیهای ابتدایی دارد که به آنها property گفته میشود. این مقادیر را میتوانیم با استفاده از شی ها تغییر دهیم. برای مثال object سجاد، امید، زهرا و مریم از کلاس انسانها قطعا 2 دست، 2 پا و یک سر و یک بدن را دارد. (مگر در موارد خاص). این موارد property های کلاس انسانها میباشد. که حال object سجاد، object امید، object زهرا و object مریم، میتوانند آنها را تغییر دهند. property ها را با نام member variable و یا متغیر عضو هم میشناسند.
صفت (attribute)
هر کلاس یکسری خصوصیات دارد که به آنها صفت گفته میشود که درواقع یک مقدار یا ارزش مشخصی برای آن به ازای هر شی میتواند وجود داشته باشد. وزن، قد، ارتفاع، طول، عرض و…
برای مثال attribute قد، در شی ِ مریم 160cm را دارد. این درحالیاست که attribute قد، در شی ِ امید، قد 195cm را دارد. بنابراین صفت ها در شیها بهخصوص هستند و میتوانند متفاوت باشند.
روش (method)
هر کلاس یکسری توابع دارد که به آنها روش (متد) گفته میشود. این توابع رفتار کلاس را مشخص میکنند و همچنین میتوانند از مقادیر ابتدایی کلاس مانند property ها و attribute ها که در ابتدا آنها را تعریف کردیم، استفاده کنند. این توابع را با نام member function و یا تابع عضو هم میشناسند.
برای مثال در شی ِ امید تابع والیبال را تعریف میکنیم چراکه شی ِ امید میتواند به خوبی والیبال بازی کند. او از property دو دست و دو پا و همچنین از attribute قد 195cm خود هم در تابع والیبال خود استفاده میکند.
ارث بری (inheritance)
کلاس فرزند میتواند همهی توابع و متغیرهای کلاس پدر (و یا تعدادی از آن را) به ارث ببرد. به انجام این عمل به اصطلاح ارث بری گفتته میشود.
کلاس پدر (parent class)
کلاسی که توسط کلاس دیگری به ارث برده میشود. همچنین به آن نیز کلاس پایه و یا سوپر کلاس گفته میشود.
کلاس فرزند (child class)
کلاسی که از کلاس دیگری ارث بری میکند. همچنین به آن زیرکلاس (subclass) هم گفته میشود.
چند ریختی (polymorphism)
این مفهوم شی گرایی برای جایی به کار می رود که یک تابع بتواند برای چند هدف مختلف استفاده شود. برای مثال نام تابع همان خواهد بود اما ممکن است تعداد مختلفی از آرگومان ها را بگیرد و بتواند وظایف متفاوتی را انجام دهد.
شما در حال آموزش و یادگیری جلسه یازدهم PHP میباشید.
سینتکس تعریف کلاس در PHP
حال فرم کلی تعریف یک کلاس جدید در پی اچ پی را بررسی میکنیم
به مثال زیر از جلسه یازدهم PHP توجه نمایید.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 |
<?php class Omid { public $hand; //property public $leg; //property public $head; //property public $Height = 195; //Attribute public function Volleyball() { //method echo "I am a professional volleyball player!"; } } |
نکته 1: بعد از نام کلیدی class، نامی که شما برای کلاس انتخاب میکنید، قرار خواهد گرفت.
نکته 2: بین براکت های باز و بسته هر تعداد از اعلانهای متغیر و تعاریف تابع میآید.
نکته 3: نام کلاسها با حروف و یا آندرلاین (_) شروع میشود و در ادامه میتوانیم مجددا از حروف، آندرلاین و یا اعداد استفاده کنیم.
نکته 4: تعریف تابع شبیه به تعریف توابع PHP است با این تفاوت که اما محلی به کلاس هستند و برای تنظیم و دسترسی به داده های شی مورد استفاده قرار می گیرند.
نکته 5: عبارت public در کلاس مشخص میکند که آن متغیر در تمامی کد قابل دسترسی است.
مثال: در قطعه کد زیر از جلسه یازدهم PHP ، یک کلاس دیگر از نوع کتاب ساختیم.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 |
<?php class Books { /* Member variables */ var $price; var $title; /* Member functions */ function setPrice($par) { $this->price = $par; } function getPrice() { echo $this->price . "<br/>"; } function setTitle($par) { $this->title = $par; } function getTitle() { echo $this->title . " <br/>"; } } |
نکته 1: متغیر this$ یک متغیر خاص است و اشاره به همان شی یعنی خودش دارد.
ساخت اشیا در PHP
هنگامیکه کلاس خود را تعریف کردید، میتوانید اشیاء زیادی را از آن نوع کلاس ایجاد کنید. در زیر مثالی از نحوه ایجاد شی با استفاده از عملگر new آمده است:
1 2 3 4 |
$physics = new Books; $maths = new Books; $chemistry = new Books; |
در اینجا ما سه شی ایجاد کردیم و این اشیا مستقل از یکدیگر هستند و موجودیت مجزای خودشان را دارند. در ادامهی جلسه یازدهم PHP بررسی نحوهی چگونگی دسترسی به تابع عضو و پردازش متغیرهای عضو را خواهید دید.
فراخوانی تابع عضو
بعد از ایجاد اشیای خود، شما قادر خواهید بود تا توابع عضو مرتبط به آن شی را فراخوانی کنید. یک تابع عضو می تواند متغیر عضو تابع مرتبط را پردازش کند. مثال زیر نشان می دهد که چگونه می توان با فراخوانی توابع عضو، قیمت و عنوان سه کتاب را مشخص کنیم. توجه داشته باشید که برای دسترسی به Property ها ، attribute ها و method ها باید از علامت (<-) استفاده کنید.
1 2 3 4 5 6 7 |
$physics->setTitle( "Physics for High School" ); $chemistry->setTitle( "Advanced Chemistry" ); $maths->setTitle( "Algebra" ); $physics->setPrice( 10 ); $chemistry->setPrice( 15 ); $maths->setPrice( 7 ); |
حال می توانیم توابع عضو دیگری را فراخوانی کنیم تا مقادیر مشخص شده توسط مثال بالا را به دست آوریم.
1 2 3 4 5 6 |
$physics->getTitle(); $chemistry->getTitle(); $maths->getTitle(); $physics->getPrice(); $chemistry->getPrice(); $maths->getPrice(); |
به خروجی آن در جلسه یازدهم PHP توجه نمایید.
Physics for High School
Advanced Chemistry
Algebra
10
15
7
تبریک میگم شما موفق شدید تا جلسه یازدهم پی اچ پی ، مبحث ” شی گرایی در پی اچ پی (1) ” را پشت سر بگذارید.
با ادامهی مباحث در جلسه دوازدهم PHP شی گرایی را پیش خواهیم برد. با ما همراه باشید.
2 Comments
Join the discussion and tell us your opinion.
با عرض سلام و خسته نباشید
ممنونم از این آموزش های عالیتون
یه سوال داشتم
$par در تابع برای چی استفاده میشه؟
با عرض سلام و خسته نباشید
ممنونم از این آموزش های عالیتون
یه سوال داشتم
$par در تابع بالا برای چی استفاده میشه؟