PHP برای برنامه نویسان ASP.NET – قسمت هشتم


قسمت اولقسمت دوم قسمت سوم قسمت چهارم قسمت پنجمقسمت ششم قسمت هفتم

شیء گرایی در PHP

کلاس در PHP مجموعه ای از متغیرها و توابع است که سینتاکس نوشتن آن برای شما برنامه نویسان دات نت بسیار آشناست. در PHP برخلاف زبان های تحت دات نت شما نمی توانید یک کلاس را در چند فایل جداگانه تعریف کنید، شما باید کلاس خود را در یک فایل و در یک بلاک PHP تعریف کنید. با شروع نسخه 5، مدل شیء گرایی PHP به کلی تغییر کرد و کارایی آن در زمینه شیء گرایی بالاتر رفت و ویژگی های جدید به آن اضافه شد. به هر حال در این مطلب کوتاه که مخصوص برنامه نویسان ASP.NET نوشته شده، ما قصد داریم بدون توضیح اصطلاحات شیء گرایی یا توضیح مفاهیم آن، شما را با نحوه نوشتن یک کلاس در PHP آشنا کنیم. بهتر است با یک مثال از سی شارپ که برای شما قابل لمس باشد شروع کنیم :

class Human
{
private string _name;
public string Name;
public string Family;
public int Height;
public int Weight;
public int Age;

public Human()
{
Console.WriteLine("a Human Created.");
}
}

class Student: Human
{
public long ID { get; set; }
public string Grade;

public Student()
{
Console.WriteLine("a Student Created.");
}

public void DisplayInformations()
{
Console.WriteLine(this.ID.ToString());
Console.WriteLine(this.Name);
Console.WriteLine(this.Family);
Console.WriteLine(this.Age);
Console.WriteLine(this.Grade);
}

~Student()
{
Console.WriteLine("a Student Destroyed.");
}
}

اگر برنامه نویس سی شارپ باشید به راحتی منظور کدهای بالا را می فهمید. یک کلاس پایه به نام Human با چند فیلد و یک متد سازنده ساختیم، سپس یک کلاس به نام Student را از آن مشتق کردیم. کلاس فرزند نیز دارای چند فیلد، یک سازنده و یک متد برای چاپ مقادیر فیلدهایش است. حالا می خواهیم این دو کلاس را در PHP پیاده سازی کنیم.

<?php
class Human {
private $_name;
public $Name;
public $Family;
public $Height;
public $Weight;
public $Age;

function __construct() {
print "a Human Created.";
}
}

class Student extends Human {
public $ID;
public $Grade;

function __construct() {
parent::__construct();
print "a Student Created.";
}

function DisplayInformations() {
print $this->ID;
print $this->Name;
print $this->Family;
print $this->Age;
print $this->Grade;
}

function __destruct() {
print "a Student Destroyed.";
}
}
?>

همانطور که می بینید سینتاکس PHP برای تعریف یک کلاس شبیه به سی شارپ است. خب به هر حال هر دو از خانواده زبان C هستند! در PHP نیز شما می توانید از private, public و protected برای تعیین چگونگی دسترسی به متغیرها (فیلدها) و توابع استفاده کنید. هنگامی که هیچکدام از این ها را در خط تعریف متغیر یا تابع ذکر نکنید به صورت پیش فرض آن عضو به عنوان public در نظر گرفته خواهد شد. در PHP هر کلاس تشکیل شده از تعدادی متغیر و تابع و در صورت نیاز سازنده و مخرب. سازنده یا Constructor کلاس در سی شارپ متد همنام با خود کلاس است. همانطور که در مثال بالا مشاهده می کنید، هر دو کلاس متدی همنام با خودشان دارند که هنگام ساخته شدن در زمان اجرا صدا زده می شوند. در PHP نسخه های قبل از 5، تعریف سازنده کلاس به همین صورتی که در سی شارپ است، بود. در نسخه 5 شما باید تابعی به نام __construct() برای پیاده سازی سازنده کلاس تعریف کنید.

برای ارث بری از یک کلاس در PHP ازکلمه کلیدی extends به همان صورتی که در مثال مشاهده می کنید، استفاده می کنیم. این یعنی کلاس Student تمام خاصیت ها (در اینجا متغیرها) و توابع کلاس پدر خود یعنی کلاس Human را به علاوه متغیرها و توابعی که در بلاک خودش تعریف شده را دارد. برای اینکه هنگام ساخته شدن کلاس Student تابع سازنده کلاس پدرش Human نیز اجرا شود باید آن را به صورت parent::__construct() صدا بزنید. تابع مخرب در PHP نیز بوسیله نوشتن تابع __destruct() امکان پذیر است.

استفاده از کلاس

برای استفاده از یک کلاس به راحتی همانند سی شارپ ابتدا از آن بوسیله کلمه new نمونه سازی کنید و از توابع مورد نیاز خود استفاده کنید.

<?php
$objStudent = new Student();
$objStudent->Name = "Iman";
$objStudent->Family = "Nemati";
$objStudent->Age = "22";
$objStudent->DisplayInformations();
?>

هنگام new کردن یک کلاس، تابع __construct() آن کلاس اجرا می شود. برای دسترسی به اعضای public یک کلاس در PHP باید از عملگر <- بلافاصله پس از نام متغیر کلاس استفاده کنید.

اعضای Static

همانند سی شارپ، در PHP هم با نوشتن کلمه کلیدی static می توانید یک تابع یا یک متغیر را به عنوان عوض استاتیک معرفی کنید. تعریف یک متد یا یک خصوصیت به صورت استاتیک آن ها را بدون نیاز به ساخت یک نمونه از کلاس در خارج از کلاس، قابل دستیابی می کند. فقط برای استفاده از اعضای استاتیک یک کلاس به جای عملگر -> باید از عملگر :: استفاده کنید.

<?php
class Sample {
public static function StaticMethod() {
//Some Function
}
}

//
Sample::StaticMethod();
?>

در کدنویسی های معمولی PHP شاید نیازی به استفاده از کلاس ها پیدا نکنید اما برای حرفه ای تر شدن و بعدها برای استفاده از فریم ورک های PHP نیاز به داشتن دید شیء گرایی و نحوه تعریف و استفاده از کلاس ها خواهید داشت. خوشبختانه برنامه نویسان ASP.NET از نظر شیء گرایی دید نسبتاً مناسب و خوبی دارند، زیرا به صورت پیش فرض تمام برنامه های آن ها بر اساس کلاس ها و مفاهیم شیء گرایی توسعه داده می شوند. احتمالاً آموزش PHP برای برنامه نویسان ASP.NET را ادامه نخواهیم داد. از اول هم قرار نبود جلوتر از این برویم. نسخه PDF کامل تر این سری نوشته ها به زودی بر روی وبلاگ قرار خواهد گرفت. امیدوارم این نوشته ها برای شما مفید بوده باشند.

farasun.wordpress.com

مشترک فید فراسان شوید!

Advertisements