Javaなどでは結構やりましたが、PHPでも動的にインタンス生成→メソッド呼び出しということをやれるとやれることが一気にふえるため、ちょっとメモです。
ソース
Animal.php(親の抽象クラス)
1 2 3 4 5 6 7 8 |
<?php namespace animal; abstract class Animal{ private $name = ''; abstract public function bark(); } |
Cat.php
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 |
<?php namespace animal; require_once 'Animal.php'; class Cat extends Animal{ private $name = 'tama'; public function bark() { echo $this->name . " " ."mya- mya-"; } } |
Dog.php
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 |
<?php namespace animal; require_once 'Animal.php'; class Dog extends Animal { private $name = 'pochi'; public function bark() { echo $this->name . " " ."wan wan"; } } |
reflection.php
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 |
<?php namespace animal; require_once 'Cat.php'; require_once 'Dog.php'; $classes = [ 'animal\Cat', 'animal\Dog' ]; foreach ($classes as $class) { $reflClass = new \ReflectionClass($class); $animal = $reflClass->newInstance(); $animal->bark() ; echo "\n"; } //tama mya- mya- //pochi wan wan |