Значения конструкции переменной создания объекта
Я пытаюсь выяснить, есть ли решение для следующей проблемы:
Допустим, у меня есть класс с именем OpenFiles. Конструктор требует путь к открываемому файлу и объект, который требуется для OpenFiles.
class OpenFiles
{
public function __construct(Object $object,$filePath)
{
//code
}
}
Объект $ всегда один и тот же, его можно найти в каком-то контейнере. Но filePath отличается каждый раз, когда нужен этот класс.
Моя "проблема" в том, что когда этот класс меняется, мне нужно просмотреть весь мой код и отредактировать его соответствующим образом.
Есть шаблон или решение для этого? или это неизбежно?
Заранее спасибо!
1 ответ
Я бы предложил использовать интерфейс для вашего объекта и использовать интерфейс в качестве входного параметра для вашей функции.
interface iPermissionCollection
{
public function getPermission($name);
}
затем измените класс, чтобы использовать интерфейс вместо объекта.
class OpenFiles
{
public function __construct(iPermissionCollection $object,$filePath)
{
//code
}
}
и если вы хотите отправить другой класс позже, просто убедитесь, что он реализует iPermissionCollection
,
Таким образом, вопрос не в том, как бы я справился с рефакторингом кода, если я изменял конструктор класса, который я использую несколько раз, а в том, как бы я написал такой класс, который использовал бы именно то, что ему нужно, и тогда я мог бы масштабироваться.