کلاس‌‌ها و اشیا (PHP 5)
PHP Manual

انتزاع کلاس

PHP 5 کلاس‌های انتزاعی و متدهای انتزاعی را معرفی نمود. از کلاسی که به صورت انتزاعی تعریف شده باشد نمی‌ٰتوانید نمونه‌سازی کنید. هر کلاس با حداقل یک متد انتزاعی خود انتزاعی است. متدهای انتزاعی تنها شکل اعلام را خواهند نوشت و مجاز به ساخت بدنه کد آن نیستند.

هنگام ارث‌بری ز یک کلاس انتزاعی تمام متدها انتزاعی باید در فرزند نیز تعریف شده باشند. علاوه بر این متدها باید به همان شکل (یا کمی آزادتر) visibility دارا باشند. برای نمونه اگر متد protected باشد پیاده‌سازی تابغ لاید بصورت protected یا public باشد و نمی‌تواند private تعریف شود.

Example #1 نمونه کلاس انتزاعی

<?php
abstract class AbstractClass
{
    
// Force Extending class to define this method
    
abstract protected function getValue();
    abstract protected function 
prefixValue($prefix);

    
// Common method
    
public function printOut() {
        print 
$this->getValue() . "\n";
    }
}

class 
ConcreteClass1 extends AbstractClass
{
    protected function 
getValue() {
        return 
"ConcreteClass1";
    }

    public function 
prefixValue($prefix) {
        return 
"{$prefix}ConcreteClass1";
    }
}

class 
ConcreteClass2 extends AbstractClass
{
    public function 
getValue() {
        return 
"ConcreteClass2";
    }

    public function 
prefixValue($prefix) {
        return 
"{$prefix}ConcreteClass2";
    }
}

$class1 = new ConcreteClass1;
$class1->printOut();
echo 
$class1->prefixValue('FOO_') ."\n";

$class2 = new ConcreteClass2;
$class2->printOut();
echo 
$class2->prefixValue('FOO_') ."\n";
?>

The above example will output:

ConcreteClass1
FOO_ConcreteClass1
ConcreteClass2
FOO_ConcreteClass2

کدهای قدیمی بدون کلاس تعریف شده کاربر یا توابع نام‌گذاری شده 'abstract' بدون هیچ تغییر باید اجرا شوند.


کلاس‌‌ها و اشیا (PHP 5)
PHP Manual