%FDMBSBUJPOͱ'JOE6TBHF
function hogehoge()
{
echo 'hoge';
}
hogehoge();
%FDMBSBUJPO
'JOE6TBHF
function hogehoge()
{
echo 'hoge';
}
hogehoge();
hogehoge();
hogehoge();
Slide 18
Slide 18 text
abstract class Human
{
public function greeting()
{
echo 'Hello';
}
}
%FDMBSBUJPOͱ'JOE6TBHF
$male = new Male();
$male->greeting();
$female = new Female();
$female->greeting();
class Male extends Human
{
public function greeting()
{
echo '͜Μʹͪ';
}
}
class Female extends Human
{
}
%FDMBSBUJPO
%FDMBSBUJPO
'JOE6TBHF
'JOE6TBHF
"OBMZ[F%BUB'MPX5Pͷ߹
class Male extends Human
{
private $data;
public function __construct($data)
{
$this->data = $data;
$this->data->hoge();
parent::__construct('male');
}
}
function makeModel()
{
$dsn = 'phptype://xxxxxxxxxxxxx';
return new HogeModel($dsn);
}
$fuga = new Fuga();
$mdl = makeModel();
$fuga->setHuman($mdl);
class Fuga
{
public function setHuman($mdl)
{
$this->male = new Male($mdl);
}
}
3FOBNF
class Robot
{
public static function greeting()
{
// ...
}
}
$robot = new Robot();
Robot::greeting();
class Android
{
public static function greeting()
{
// ...
}
}
$robot = new Android();
Android::greeting();
OFX͍ͯ͠ΔՕॴΛࣗಈͰमਖ਼
TUBUJDGVODUJPOݺͼग़͠Օॴ
ࣗಈͰमਖ਼
ɾDMBTT໊Λมߋ
&YUSBDUܥ
abstract class Human
{
private $name;
public function __construct($age, $address, $name)
{
$name = 'hoge';
$data['age'] = $age;
$data['address'] = $address;
}
private function setData($age, $address)
{
$data['age'] = $age;
$data['address'] = $address;
return $data;
}
public function greeting()
{
echo '͜Μʹͪ';
}
}
&YUSBDU'JFME
ʢϑΟʔϧυΓग़͠ʣ
&YUSBDU1BSBNFUFS
ʢҾΓग़͠ʣ
&YUSBDU.FUIPE
ʢผNFUIPEΓग़͠ʣ
JOUFSGBDF4QFBLBCMF*OUFSGBDF
\
QVCMJDGVODUJPOTQFBL
^
&YUSBDU*OUFSGBDF
ʢΠϯλʔϑΣʔεͷΓग़͠ʣ
Slide 30
Slide 30 text
1VTI.FNCFST%PXO1VMM.FNCFST6Q
abstract class Human
{
public function speak()
{
echo 'hoge';
}
}
class Male extends Human
{
QVCMJDGVODUJPOTQFBL
\
FDIPbIPHF`
^
^
1VTI.FNCFST%PXO
ʢϝϯόఆٛΛܧঝઌҠಈʣ
1VMM.FNCFST6Q
ʢϝϯόఆٛΛܧঝݩҠಈʣ
QSJWBUFQSPUFDUFE
QSPQFSUZNFUIPEͷ'JOE6TBHF
class Male extends Human
{
public function __construct()
{
parent::__construct('Male');
}
public function greeting()
{
echo $this->name;
}
}
abstract class Human
{
protected $name;
public function __construct($name)
{
$this->name = $name;
}
}
%FDMBSBUJPO
'JOE6TBHF
˞ಉ໊ͷDMBTT͕ͳ͚Ε࿙ΕϊΠζͳ͍
˞ಉ໊ͷDMBTT͕͋Δͱ͓͔͘͠ͳΔ
Կނ'JOE6TBHF͕ಇ͔ͳ͍ͷ͔ʁ
wQVCMJDQSPQFSUZNFUIPEͷΞΫηεεςʔτϝϯτͰ֬ఆ͢Δ
wϑΝΠϧείʔϓΛ·ͨ͗͏Δ
wϑΝΠϧείʔϓΛ·͙ͨͱجຊతʹܕਪͰ͖ͳ͍
$male = new Male();
$male->greeting();
speak($male);
function speak($male)
{
$male->greeting();
}
class Male
{
public function greeting()
{
echo 'Hello';
}
}
NBMF.BMFDMBTTͷ
ΦϒδΣΫτʂ
͜Εͳʹʁʁʁʁʁ
Γͷܕਪ
wશͯͷSFUVSOͷू߹
function makeHuman()
{
if (rand(0, 1)) {
return new Male();
} else {
return new Female();
}
return new Robot();
}
$human = makeHuman();
.BMF
·ͨ
'FNBMF
·ͨ
3PCPU ࣮ߦ࣌ʹઈରݺΕͳ͍
Γߟྀʹ͍Εͯ͠
·͏
Slide 55
Slide 55 text
Γͷܕਪ
wΓͷܕࢦఆ 1)1
·ͨ1)1%PD͕͋ΕɺͦͪΒΛ༏ઌ͢Δ
w྆ํ͋Δ߹ͦͷू߹ͱͳΔ
w༏ઌॱҐɿܕࢦఆ1)1%PDSFUVSOͷू߹
/**
* @return Male
*/
function makeHuman(): Human
{
if (rand(0, 1)) {
return new Male();
}
return new Robot();
}
$human = makeHuman();
)VNBO
·ͨ
.BMF
Slide 56
Slide 56 text
QSPQFSUZͷܕਪ
wͦͷείʔϓͰͷೖͱɺίϯετϥΫλͰͷೖͷू߹ͱͳΔ
wDMBTTͷίϯετϥΫλͰೖ͞Ε͍ͯͯղੳରͱ͢Δ
class Fuga extends Hoge
{
public function greeting()
{
$this->human = new Female();
$this->human->greeting();
}
}
class Hoge
{
protected $human;
public function __construct()
{
$this->human = new Male();
}
}
.BMF
·ͨ
'FNBMF
Slide 57
Slide 57 text
QSPQFSUZͷܕਪ
wղੳରͷDMBTTͷίϯετϥΫλͷํ͕ɺDMBTTͷίϯετϥΫλ
ΑΓ༏ઌ͞ΕΔʢͪΐͬͱෆࢥٞͳڍಈɾɾɾʣ
class Fuga extends Hoge
{
public function __construct()
{
$this->human = new Robot();
parent::__construct();
}
public function greeting()
{
$this->human = new Female();
$this->human->greeting();
}
}
class Hoge
{
protected $human;
public function __construct()
{
$this->human = new Male();
}
}
3PCPU
·ͨ
'FNBMF
DMBTTͰ.BMFͰೖ͞Ε
Δ͔Βҙຯ͕ແ͍ೖ
Slide 58
Slide 58 text
QSPQFSUZͷܕਪ
w1)1%PD͕͋ΕɺͦΕू߹ʹՃΘΔ
w༏ઌॱҐɿͦͷείʔϓͰͷೖʹίϯετϥΫλʹ1)1%PD
class Fuga extends Hoge
{
public function greeting()
{
$this->human = new Female();
$this->human->greeting();
}
}
class Hoge
{
/**
* @var Robot
*/
protected $human;
public function __construct()
{
$this->human = new Male();
}
}
.BMF
·ͨ
'FNBMF
·ͨ
3PCPU
Slide 59
Slide 59 text
άϩʔόϧείʔϓͷมͷܕਪ
wશͯͷϑΝΠϧͷάϩʔόϧείʔϓͷू߹ͱͳΔ
wͨͿΜ'JOE6TBHFͷର͔Β࿙Εͳ͍Α͏ʹɺશͯͷՄೳੑΛߟྀ
͠Α͏ͱͨ݁͠ՌͩͱࢥΘΕΔ
$human = new Male(); $human = new Female(); $human = new Robot();
$human->greeting();
)VNBO
·ͨ
.BMF
·ͨ
3PCPU