11<?xml version =" 1.0" encoding =" utf-8" ?>
22<!-- $Revision$ -->
3- <!-- EN-Revision: 9ee9eccf455188ab6eb352194eb6f9eb99e15606 Maintainer: hirokawa Status: ready -->
3+ <!-- EN-Revision: 984188eb6941dc419f49eed6c1a55a6b749a823d Maintainer: hirokawa Status: ready -->
44<!-- CREDITS: shimooka -->
55
66<sect1 xml : id =" language.oop5.abstract" xmlns =" http://docbook.org/ns/docbook" >
2626 <programlisting role =" php" >
2727<![CDATA[
2828<?php
29+
2930abstract class AbstractClass
3031{
3132 // 拡張クラスにこのメソッドの定義を強制する
3233 abstract protected function getValue();
3334 abstract protected function prefixValue($prefix);
3435
3536 // Common method
36- public function printOut() {
37+ public function printOut()
38+ {
3739 print $this->getValue() . "\n";
3840 }
3941}
4042
4143class ConcreteClass1 extends AbstractClass
4244{
43- protected function getValue() {
45+ protected function getValue()
46+ {
4447 return "ConcreteClass1";
4548 }
4649
47- public function prefixValue($prefix) {
50+ public function prefixValue($prefix)
51+ {
4852 return "{$prefix}ConcreteClass1";
4953 }
5054}
5155
5256class ConcreteClass2 extends AbstractClass
5357{
54- public function getValue() {
58+ public function getValue()
59+ {
5560 return "ConcreteClass2";
5661 }
5762
58- public function prefixValue($prefix) {
63+ public function prefixValue($prefix)
64+ {
5965 return "{$prefix}ConcreteClass2";
6066 }
6167}
6268
63- $class1 = new ConcreteClass1;
69+ $class1 = new ConcreteClass1() ;
6470$class1->printOut();
65- echo $class1->prefixValue('FOO_') . "\n";
71+ echo $class1->prefixValue('FOO_'), "\n";
6672
67- $class2 = new ConcreteClass2;
73+ $class2 = new ConcreteClass2() ;
6874$class2->printOut();
69- echo $class2->prefixValue('FOO_') ."\n";
75+ echo $class2->prefixValue('FOO_'), "\n";
76+
7077?>
7178]]>
7279 </programlisting >
@@ -86,32 +93,34 @@ FOO_ConcreteClass2
8693 <programlisting role =" php" >
8794<![CDATA[
8895<?php
96+
8997abstract class AbstractClass
9098{
9199 // 抽象メソッドでは、必須の引数だけを定義しています
92100 abstract protected function prefixName($name);
93-
94101}
95102
96103class ConcreteClass extends AbstractClass
97104{
98-
99105 // 子クラスでは、親のシグネチャにないオプション引数を定義することもあるでしょう
100- public function prefixName($name, $separator = ".") {
106+ public function prefixName($name, $separator = ".")
107+ {
101108 if ($name == "Pacman") {
102109 $prefix = "Mr";
103110 } elseif ($name == "Pacwoman") {
104111 $prefix = "Mrs";
105112 } else {
106113 $prefix = "";
107114 }
115+
108116 return "{$prefix}{$separator} {$name}";
109117 }
110118}
111119
112- $class = new ConcreteClass;
120+ $class = new ConcreteClass() ;
113121echo $class->prefixName("Pacman"), "\n";
114122echo $class->prefixName("Pacwoman"), "\n";
123+
115124?>
116125]]>
117126 </programlisting >
@@ -123,9 +132,7 @@ Mrs. Pacwoman
123132]]>
124133 </screen >
125134 </example >
126-
127135</sect1 >
128-
129136<!-- Keep this comment at the end of the file
130137Local variables:
131138mode: sgml
0 commit comments