Передача параметра методом или классом?

1

У меня есть класс, который содержит несколько методов. Итак, я хочу узнать, какой подход лучше?

Прохождение по методам:

class cls {

    function method1($var){
        echo $var;
    }

    function method2($var){
        echo $var;
    }

}

$obj = new cls;
$obj->methodX($var); // X can be 1,2

Прохождение по классу:

class cls {

    public $var;
    function __construct($var){
        $this->var = $var;
    }

    function method1(){
        echo $this->var;
    }

    function method2(){
        echo $this->var;
    }

}

$obj = new cls($var);
$obj->methodX(); // X can be 1,2

Примечание. Мне нужно использовать $var для всех методов. Также на самом деле существует почти 10 методов.

  • 6
    На это нет общего ответа. Это зависит от того, что $var предназначено для выражения по отношению к классу. Если это значение, которое каким-то образом описывает объект или является свойством объекта или его поведения, то его следует смоделировать как таковое. Если он не связан с классом или объектом, а является просто параметром времени выполнения или дополнением вывода, то он должен быть предоставлен во время выполнения, где это необходимо.
  • 0
    @arkascha Понятно, спасибо.
Показать ещё 1 комментарий
Теги:
oop
parameter-passing

1 ответ

0

С точки зрения дизайна я бы хотел передать его классу. Он позволяет только передать ваш параметр один раз. Он также удаляет зависимость, которую вы используете в своем аргументе, в каждом методе/функции, в котором вы хотите вызвать метод.

Сравнение производительности между ними не учитывается (ссылка).

  • 0
    Он не удаляет зависимость, он просто скрывает его от метода и связывает его с классом. В зависимости от контекста это не обязательно должно быть плохо, но поскольку мы не знаем контекст, такой общий ответ - опасный совет.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню