PHP에서는 기본적으로 생성자 오버로딩이 되지 않는다.
다른 방법으로는 func_get_args()
를 이용한 방법과 팩토리 패턴을 이용한 방법이 있는데,func_get_args()
를 이용하게 되면 인수를 검사기 위해 코드가 지저분해 질 수 있다.
때문에 팩토리 패턴을 이용하는 방법을 추천한다.
팩토리 패턴을 이용
class Poo
{
protected $name;
public function __construct()
{
}
public static function withName($name)
{
$instance = new self();
$instance->setName($name);
return $instance;
}
public function setName($name)
{
$this->name = $name;
}
public function getName()
{
return $this->name;
}
}
$poo = Poo::withName('홍길동');