Fluent Interface Повторное использование имен методов - PullRequest
0 голосов
/ 03 апреля 2020

Я работаю над библиотекой, и для простоты использования и читабельности я хотел объединить методы в один интерфейс. У меня проблема с именованием методов.

Если, например, у меня есть

$obj->BaseMethod1()->Add();

Я также хочу иметь

$obj->BaseMethod2()->Add();

Что было бы совсем по-другому.

Я думаю, что смогу сделать это sh, сделав следующее:

private string $func;

private function BaseMethod1Add() {
    //Perform Action
    return $this;
}

private function BaseMethod2Add() {
    //Perform Some Different Action
    return $this;
}

public function BaseMethod1() {
    $this->func = "BaseMethod1";
    return $this; 
}

public function BaseMethod2() {
    $this->func = "BaseMethod2";
    return $this; 
}

public function Add() {
    switch ($this->func) {
        case 'BaseMethod1':
            BaseMethod1Add();
        case 'BaseMethod2':
            BaseMethod2Add();
    }
}

Есть ли лучший или более чистый способ достижения sh это?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...