������

PHP 5 ֧�ֳ�����ͳ��󷽷�������Ϊ������಻�ܱ�ʵ�������κ�һ���࣬���������������һ�������DZ�����Ϊ����ģ���ô�����ͱ��뱻����Ϊ����ġ�������Ϊ����ķ���ֻ������������÷�ʽ�������������ܶ��������Ĺ���ʵ�֡�

�̳�һ���������ʱ��������붨�常���е����г��󷽷������⣬��Щ���������ʿ�������͸�����һ�������߸�Ϊ���ɣ�������ij�����󷽷�������Ϊ�ܱ����ģ���ô������ʵ�ֵķ�����Ӧ������Ϊ�ܱ����Ļ��߹��еģ������ܶ���Ϊ˽�еġ����ⷽ���ĵ��÷�ʽ����ƥ�䣬�����ͺ����������������һ�¡����磬���ඨ����һ����ѡ��������������󷽷���������û�У������ߵ��������޳�ͻ�� ��Ҳ������ PHP 5.4 ��Ĺ��캯������ PHP 5.4 ֮ǰ�Ĺ��캯���������Բ�һ���ġ�

Example #1 ������ʾ��

<?php
abstract class AbstractClass
{
 
// ǿ��Ҫ�����ඨ����Щ����
    
abstract protected function getValue();
    abstract protected function 
prefixValue($prefix);

    
// ��ͨ�������dz��󷽷���
    
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";
?>

�������̻������

ConcreteClass1
FOO_ConcreteClass1
ConcreteClass2
FOO_ConcreteClass2

Example #2 ������ʾ��

<?php
abstract class AbstractClass
{
    
// ���ǵij��󷽷�����Ҫ������Ҫ�IJ���
    
abstract protected function prefixName($name);

}

class 
ConcreteClass extends AbstractClass
{

    
// ���ǵ�������Զ��常��ǩ���в����ڵĿ�ѡ����
    
public function prefixName($name$separator ".") {
        if (
$name == "Pacman") {
            
$prefix "Mr";
        } elseif (
$name == "Pacwoman") {
            
$prefix "Mrs";
        } else {
            
$prefix "";
        }
        return 
"{$prefix}{$separator} {$name}";
    }
}

$class = new ConcreteClass;
echo 
$class->prefixName("Pacman"), "\n";
echo 
$class->prefixName("Pacwoman"), "\n";
?>

�������̻������

Mr. Pacman
Mrs. Pacwoman

�ϴ��������û���Զ��������������Ϊ"abstract"����Ӧ���ܲ����޸ĵ��������С�