خصوصیت (Abstract) در php

گردآوری و تالیف : مجله آموزشی راکت
تاریخ انتشار : 27 تیر 1396
دسته بندی ها : پی اچ پی

یکی از خصوصیاتی که زبان php در قالب شی گرایی از آ« بهره مند میباشد،خاصیت Abstract می باشد.

خاصیت Abstract زمانی استفاده می شود که بخواهیم کلاس یا متدی را بدون داشتن بدنه تعریف کنیم و بخواهیم بدنه آن را بعداً تعریف میکنیم.به عنوان مثال اگر بخواهیم چندین کلاس مختلف برای کار با بانک های اطلاعاتی مختلف در برنامه تعریف کنیم که در آن برخی کارها یکسان می باشد. در این زمان متد یا کلاس های آن بانک ها را خارج از بدنه تعریف و در مکان مشخص بدنه ی مربوط به توابع و کلاس هارا تعریف مینماییم. میتوان یک کلاس abstract و توابع یکسان آنها را تعریف کنیم و سپس به نسبت هر بانک اطلاعاتی که در برنامه استفاده شده است یا هر قطعه از برنامه توابع مخصوص آن را فراخوانی کرد و از آن توابع و کلاس هایی که خارج از بدنه ایجاد شده استفاده نماییم.

برای مثال به کد زیر توجه کنید:

abstract class Base_DB{ 
    private $id; 
    abstract function update($data,$id); 
    abstract function insert($data); 
    function save($data){ 
        if(is_null($this->id)){ 
            $this->insert($data); 
        }else{ 
            $this->update($data,$this->id); 
        } 
    } 
} 
class MySQL_DB extends Base_DB{ 
    function update($data,$id) 
    { 
        // کدهای مربوط به ویرایش 
    } 
    function insert($data) 
    { 
        // کدهای مربوط به درج کردن 
    } 
} 
class Oracle_DB extends Base_DB{ 
    function update($data,$id) 
    { 
        // کدهای مربوط به ویرایش 
    } 
    function insert($data) 
    { 
        // کدهای مربوط به درج کردن 
    } 
}

با کمک کلاس های MySQL_DB و Oracle_DB که در بالا تعریف شد می توان با متد save و یا هر متد دیگری کارهای مربوطه را انجام داد. توجه داشته باشید که توابع update و insert که در کلاس Base_DB به صورت abstract تعریف شده اند باید در کلاسهایی که از آن سرچشمه می گیرند تعریف شده باشند.

مزیت های استفاده از abstract :

  1. کم تر شدن کدهای نوشته شده
  2. افزایش سرعت برنامه
  3. روان تر و خواناتر بودن کدها

توجه کنید که کلاسهایی که به صورت interface تعریف می شوند تقریباً همانند کلاس هایی هستند که به صورت   abstract  تعریف می شوند اما نحوه تعریف و استفاده آنها متفاوت می باشد.

به مثال زیر توجه کنید:

interface class Base_DB { 
    public function update($data,$id); 
    public function insert($data); 
} 

class MySQL_DB implements Base_DB{ 
    function update($data,$id) 
    { 
        // کدهای مربوط به ویرایش 
    } 
    function insert($data) 
    { 
        // کدهای مربوط به درج کردن 
    } 
} 
class Oracle_DB implements Base_DB{ 
    function update($data,$id) 
    { 
        // کدهای مربوط به ویرایش 
    } 
    function insert($data) 
    { 
        // کدهای مربوط به درج کردن 
    } 
}  

تفاوت کلاس هایی که به صورت interface تعریف میشوند با کلاس هایی که به صورت  abstract تعریف میشوند:

  •  کلاسهایی که به صورت interface تعریف می شوند نباید شامل بدنه یک متد باشند. در صورتی که کلاس های abstract می توانستند ادغامی از توابع معمولی و توابع abstract شوند.
  • کلاسهای interface بجای extends با implements توسعه می یابند.

در برنامه نویسی شی گرا  توجه به این نکته که آیا شئ مورد نظر از کلاس مد نظر ما ساخته شده است یا نه نکته ای است که میتواند کاربرد های بسیاری برای توسعه دهنده یا برنامه نویس داشته باشد.

برای این منظور می توان از دستور instanceof استفاده کرد.

از دیگر استفاده هایی که از instanceof  صورت میگیرد میتوان به کلاس هایی که از یک کلاس دیگر ارث بری کرده اند اشاره نمود.

به کد زیر توجه کنید:

class Parent 
{ 
    // ... 
} 

class PLUS extends Parent 
{ 
    // ... 
} 

$test = new PLUS(); 
if($test instanceof PLUS) 
{ 
    echo "test comes from PLUS..
"; 
} 
if($test instanceof Parent) 
{ 
    echo "test comes from Parent..
"; 
}

خروجی کد بالا به صورت زیر می باشد:

test comes from PLUS..
test comes from Parent..
این مطلب را با دیگران به اشتراک بگذارید :

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

پیکر بندی امنیتی php.ini

فایل php.ini فایل کانفیگ php در لینوکس است .فایل php.ini به طور پیش فرض فایل پیکربندی برای اجرای برنامه هایی است که نیاز به PHP دارند .از این فایل برا...

کلاس PHP Live Radio Streaming

در این مقاله قصد داریم به معرفی یکی دیگر از  کلاس های حوزه ی  Audioاز مجموعه کلاس های php بپردازیم.با ما همراه باشید . کلاسی که در این مقاله درباره ی...

مدیریت خطا در زبان برنامه نویسی PHP

در زمان نوشتن اسکریپت ها و برنامه های تحت وب ، مدیریت خطا یک بخش مهم به حساب می آید . اگر کد شما ، نقص مدیریت خطا داشته باشد ، برنامه طراحی شده بسیار...

آرایه ها و توابع مرتبط با آن در زبان php

آرایه متغیری است که می تواند چندین مقدار را در خود نگهداری نماید . این نوع متغیر تمامی موارد مورد نظر را درون خود با یک نام واحد نگهداری کرده . و به ه...