TOC

This article is currently in the process of being translated into Persian (~97% done).

Classes:

Defining and using a class

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

تعریف یک کلاس در پی اچ پی خیلی شبیه به اعلان یک تابع است ولی به جای استفاده از کلید واژه تابع (function) از کلید واژه کلاس (class) استفاده می کنیم. بیایید با یک کد کوچک برای کلاس کاربر (نام کلاس User) شروع کنیم.

<?php
class User
{
    
}
?>

این کد تا جای ممکن ساده است و شاید تصور کنید این کلاس در این مرحله مطلقاً هیچ کاری انجام نمی دهد. درست است ولی می توانیم از روی آن با کمک کلید واژه new نمونه سازی کنیم:

;()user = new User$

ولی چون این کلاس هنوز کار خاصی انجام نمی دهد، شیء user$ هم به همان مقدار بی مصرف است. بیایید آن را با افزودن تعدادی متغییر و متد اصلاح کنیم

class User
{
    public $name;
    public $age;
    
    public function Describe()
    {
        return $this->name . " is " . $this->age . " years old";
    }
}

بسیار خوب، در اینجا تعدادی مفهوم جدید ظاهر می شوند. اول این که ما دو متغیر کلاسی اعلان کرده ایم name و age. متغییر name با شناسه "public" پیشوند دار شده است که اساساً به معنای آن است که این متغییر در خارج از کلاس قابل دسترسی است. بعداً در یکی از فصول آتی در خصوص شناسه های دسترسی بیشتر خواهیم خواند.

بعد از آن تابع ()Describe را تعریف می کنیم. همانطور که می بینید، این کار درست شبیه به اعلان یک تابع معمولی است ولی با چند استثناء. اول این که کلید واژه "public" را در ابتدای خود دارد تا شناسه دسترسی آن را مشخص کند. درون خود تابع از متغییر this به شکل "this$" استفاده کرده ایم تا به متغییرهای خود کلاس دسترسی داشته باشیم. "this$" یک متغییر خاص در پی اچ پی است که در توابع کلاسی در دسترس است و همواره به شیء ای اشاره می کند که در آن مورد استفاده قرار گرفته است.

بسیار خوب، بیایید تا از کلاس جدیدی که تعریف کرده ایم استفاده کنیم. کد زیر باید بعد از این که کلاس اعلان یا در سند لحاظ شد (include) مورد استفاده قرار گیرد:

$user = new User();
$user->name = "John Doe";
$user->age = 42;
echo $user->Describe();

اولین نکته ای که باید بدان توجه کنید استفاده از عملگر <- است. از این عملگر در متد ()Describe نیز استفاده کرده ایم و اگر بخواهیم ساده بگویم بیان کننده خواست ما برای دسترسی به چیزی از آن شیء است که قبل از این عملگر قرار گرفته است. user->name$ معادل با این است که که بگوئیم "متغیر name را از شیء user$ در اختیارم قرار بده". بقیه آن چه در ادامه آمده همان انتساب یک مقدار به یک متغییر معمولی است که این کار را برای دو متغییر name و age از شیء user دو بار انجام داده ایم. در خط آخر متد ()Describe از شیء user را فراخوانی کرده ایم که یک رشته از اطلاعات را بر می گرداند و آن را نمایش می دهد. نتیجه باید چیزی شبیه به این باشد:

John Doe is 42 years old

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


This article has been fully translated into the following languages: Is your preferred language not on the list? Click here to help us translate this article into your language!