@nika09

Как использовать магические методы и перегрузку?

Здравствуйте!
есть такая задача: нужно создать класс с несколькими конструкторами, и вызывать конструкторы в зависимости от переданных параметров, это нужно сделать перегрузкой методов вероятнее всего с помощью метода __call().
Подскажите как можно это сделать???? Решение данной задачи другим способом:

class BaseClass {

    function __construct($color, $qwerty = null, $name = null) {
        if (null === $qwerty) {
            $this->construct1($color);
        } elseif (null === $name) {
            $this->construct2($color, $qwerty);
        }
		else {
			$this->construct3 ($color, $qwerty, $name);
		}
    }


    private function construct1($color) {
echo "1234";
    }

    private function construct2($color, $qwerty) {
echo "qwerty";
    }
	  private function construct3($color, $qwerty, $name) {
echo "09876";
    }
	
}

$obj2 = new BaseClass("234567");


будет вызван конструктор1, если написать $obj2 = new BaseClass("234567", "рпоавлпр"); то вызовется конструктор2 и т.д. точно такое же нужно сделать перегрузкой.
  • Вопрос задан
  • 143 просмотра
Пригласить эксперта
Ответы на вопрос 2
Arekus
@Arekus
Воспользуйся паттерном Абстрактная фабрика . Т.е. в отдельный класс фабрики передаешь все свои параметры и там уже объект собирается так как тебе надо.
Ответ написан
Комментировать
alexey-m-ukolov
@alexey-m-ukolov Куратор тега PHP
С помощью __call() это сделать невозможно. Единственное возможное решение вы привели.
Но вообще, задача выглядит очень странно. Возможно, вам нужны сеттеры для свойств или именованные конструкторы?
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы