خصوصیت (Abstract) در php
ﺯﻣﺎﻥ ﻣﻄﺎﻟﻌﻪ: 3 دقیقه

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

یکی از خصوصیاتی که زبان 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..

چه امتیازی برای این مقاله میدهید؟

خیلی بد
بد
متوسط
خوب
عالی
5 از 11 رای

/@roocketir

باور ما اینست که کاربران ایرانی لایق بهترین‌ها هستند، از این رو ما تمام تلاش خود را می‌کنیم تا بتوانیم فیلم‌ها و مقالات آموزشی بروز و کاربردی را در اختیارتان قرار دهیم تا با استفاده از آنها بتوانید جزء بهترین‌ها در صنعت طراحی و برنامه‌نویسی وب شوید. ما ادعا نمی‌کنیم که بهترین هستیم ولی همیشه تمام تلاش خود را می‌کنیم بهترین عملکرد را به شما ارائه دهیم.

دیدگاه و پرسش

برای ارسال دیدگاه لازم است وارد شده یا ثبت‌نام کنید ورود یا ثبت‌نام

در حال دریافت نظرات از سرور، لطفا منتظر بمانید

در حال دریافت نظرات از سرور، لطفا منتظر بمانید

پشتیبانی راکت

۵ مقاله اخیر

۵ مقاله اخیر از این قسمت برای شما در دسترس است

مقالات برگزیده

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

مشاهده همه مقالات