Abstract چیست؟
تجرد یا Abstract موقعی استفاده می شود که بخواهیم کلاس یا تابعی را بدون داشتن بدنه تعریف کنیم و بخواهیم بدنه آن را بعداً تعریف کنیم.
به عنوان مثال اگر بخواهیم چندین کلاس مختلف برای کار با دیتابیس های مختلف در برنامه تعریف کنیم که در آن برخی کارها یکسان می باشد؛ میتوانیم یک کلاس abstract برای تعریف اولیه و توابع یکسان آنها تعریف کنیم و سپس به نسبت هر دیتابیس توابع مخصوص آن را فراخوانی کرد.
مزیت های استفاده از abstarct:
- کم تر شدن کدهای نوشته شده
- افزایش سرعت برنامه
- روان تر و خواناتر بودن کدها
مثال:
<?php
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 تعریف شده اند باید در کلاسهایی که از آن سرچشمه می گیرند تعریف شده باشند.