myspace
@myspace

Не запутает ли такой полиморфизм разработчика?

класс request, method() без аргументов возвращает имя request_method`а, а при передаче строкой нужного метода, возвращает массив с данными(или false)
class Request {

    public function method($method = null) {
        switch ($method) {
            case null:
                return $_SERVER['REQUEST_METHOD'];
                break;
            case 'post':
                return $this->post();
                break;
            case 'get':
                return $this->get();
                break;
            default:
                return false;
        }
    }

    private function post() {
       return $this->method() === 'post' ? $_POST : false;
    }

    private function get() {
        return $this->method() === 'get' ? $_GET : false;
    }
///


Стоит ли использовать такие способы, или сделать классически?
  • Вопрос задан
  • 234 просмотра
Решения вопроса 1
@rPman
Я не буду говорить про ООП, читаемость кода или его модифицируемость в будущем.

Меня просто корежит использование строк для передачи управляющих команд в методы... тем более там где это совершенно не нужно. Вдумайтесь, исключительно для вашего синтаксического сахара, в базовые методы коммуникации вы вставляете сравнение строк! Ну что мешает завести численный дефайн или воспользоваться делегатами (передать сам метод в качестве параметра)?

К сожалению это за последние десять лет стало нормой на столько что можно увидеть абсолютно везде... а потом удивляются, а почему все работает так медленно, и памяти кушает много.

p.s. по теме, если параметр, который подставляют в вызов method() будет браться из-вне, например значение одного из параметров в GET, то я бы порекомендовал пропустить эти параметры через специальный метод-фильтр, конвертирующий строки во внутреннее представление (числовые дефайны или ссылки на методы), он же проверяет их валидность... вот это удобство для программиста, когда выделяется отдельная задача в отдельный метод/класс... ООП тут совершенно не требуется, так как нечего наследовать, хотя может быть использовано просто как синтаксический способ объединить код и данные в одном месте.
Ответ написан
Пригласить эксперта
Ответы на вопрос 1
@Nc_Soft
Вы понимаете что строчка ниже делает тоже самое?
var_dump( $_SERVER['REQUEST_METHOD'] == 'post' ? $_POST : ($_SERVER['REQUEST_METHOD'] == 'get' ? $_GET : false) );
Ответ написан
Ваш ответ на вопрос

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

Войти через центр авторизации
Похожие вопросы