print $this->getValue($dd) . "\n";
    }
}
class ConcreteClass1 extends AbstractClass
{
    protected function getValue($dd)
    {
        return "ConcreteClass1 " . $dd . ' line 21 ';
    }
    public function prefixValue($prefix)
    {
        return "{$prefix}ConcreteClass1";
    }
}
class ConcreteClass2 extends AbstractClass
{
    public function getValue($dd)
    {
        return "ConcreteClass2 " . $dd . ' line 32 ';
    }
    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";
Exemple #2
0
    }
}
/******************************************************************************/
class ConcreteClass2 extends AbstractClass implements InterfaceClass
{
    public function myNewInterface($stuff)
    {
        return "A new interface here - {$stuff}";
    }
    public function getValue()
    {
        return "ConcreteClass2";
    }
    public function prefixValue($prefix)
    {
        return "{$prefix}ConcreteClass2";
    }
    public function printOut()
    {
        print "OVERRIDE: Your subconscious robot.\n";
    }
}
/******************************************************************************/
$class1 = new ConcreteClass1();
$class1->printOut();
echo $class1->prefixValue('FOO_') . "\n";
/******************************************************************************/
$class2 = new ConcreteClass2();
$class2->printOut();
echo $class2->prefixValue('FOO_') . "\n";
echo $class2->myNewInterface('yolo') . "\n";