PHP 5 支锟街筹拷锟斤拷锟斤拷统锟斤拷蠓椒锟斤拷锟斤拷锟斤拷锟轿拷锟斤拷锟斤拷锟洁不锟杰憋拷实锟斤拷锟斤拷锟斤拷锟轿猴拷一锟斤拷锟洁,锟斤拷锟斤拷锟斤拷锟斤拷锟斤拷锟斤拷锟斤拷锟揭伙拷锟斤拷锟斤拷锟斤拷潜锟斤拷锟斤拷锟轿拷锟斤拷锟侥o拷锟斤拷么锟斤拷锟斤拷锟酵憋拷锟诫被锟斤拷锟斤拷为锟斤拷锟斤拷摹锟斤拷锟斤拷锟斤拷锟轿拷锟斤拷锟侥凤拷锟斤拷只锟斤拷锟斤拷锟斤拷锟斤拷锟斤拷锟斤拷梅锟绞斤拷锟斤拷锟斤拷锟斤拷锟斤拷锟斤拷锟斤拷芏锟斤拷锟斤拷锟斤拷锟斤拷墓锟斤拷锟绞碉拷帧锟�
锟教筹拷一锟斤拷锟斤拷锟斤拷锟斤拷锟绞憋拷锟斤拷锟斤拷锟斤拷锟诫定锟藉父锟斤拷锟叫碉拷锟斤拷锟叫筹拷锟襟方凤拷锟斤拷锟斤拷锟解,锟斤拷些锟斤拷锟斤拷锟斤拷锟斤拷锟绞匡拷锟斤拷锟斤拷锟斤拷透锟斤拷锟斤拷锟揭伙拷锟斤拷锟斤拷锟斤拷吒锟轿拷锟斤拷桑锟斤拷锟斤拷锟斤拷锟侥筹拷锟斤拷锟斤拷蠓椒锟斤拷锟斤拷锟斤拷锟轿拷鼙锟斤拷锟斤拷模锟斤拷锟矫达拷锟斤拷锟斤拷锟绞碉拷值姆锟斤拷锟斤拷锟接︼拷锟斤拷锟斤拷锟轿拷鼙锟斤拷锟斤拷幕锟斤拷吖锟斤拷械模锟斤拷锟斤拷锟斤拷芏锟斤拷锟轿斤拷械摹锟斤拷锟斤拷夥斤拷锟斤拷牡锟斤拷梅锟绞斤拷锟斤拷锟狡ワ拷洌拷锟斤拷锟斤拷秃锟斤拷锟斤拷锟斤拷锟斤拷锟斤拷锟斤拷锟斤拷锟斤拷一锟铰★拷锟斤拷锟界,锟斤拷锟洁定锟斤拷锟斤拷一锟斤拷锟斤拷选锟斤拷锟斤拷锟斤拷锟斤拷锟斤拷锟斤拷锟斤拷蠓椒锟斤拷锟斤拷锟斤拷锟斤拷锟矫伙拷校锟斤拷锟斤拷锟斤拷叩锟斤拷锟斤拷锟斤拷锟斤拷蕹锟酵伙拷锟� 锟斤拷也锟斤拷锟斤拷锟斤拷 PHP 5.4 锟斤拷墓锟斤拷旌拷锟斤拷锟斤拷锟� PHP 5.4 之前锟侥癸拷锟届函锟斤拷锟斤拷锟斤拷锟斤拷锟皆诧拷一锟斤拷锟侥★拷
Example #1 锟斤拷锟斤拷锟斤拷示锟斤拷
<?php
abstract class AbstractClass
{
// 强锟斤拷要锟斤拷锟斤拷锟洁定锟斤拷锟斤拷些锟斤拷锟斤拷
abstract protected function getValue();
abstract protected function prefixValue($prefix);
// 锟斤拷通锟斤拷锟斤拷锟斤拷锟角筹拷锟襟方凤拷锟斤拷
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
{
// 锟斤拷锟角的筹拷锟襟方凤拷锟斤拷锟斤拷要锟斤拷锟斤拷锟斤拷要锟侥诧拷锟斤拷
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"锟斤拷锟斤拷应锟斤拷锟杰诧拷锟斤拷锟睫改碉拷锟斤拷锟斤拷锟斤拷锟叫★拷