Является ли передача $ this статической методике тесной связи? - PullRequest
1 голос
/ 19 декабря 2011

Вот простой пример:

class Class_A {   
    protected $_property;

    public function method()
    {
        Class_B::method($this);
    }

    public function getProperty()
    {
        return $this->_property;
    }
}

class Class_B {
    public static function method(Class_A $classA)
    {
        $classA->getProperty();
    }
}

$classA = new ClassA();
$classA->method();

Можно ли передать $ this в качестве параметра методу другого класса?Или это всегда будет жесткой связью?Я мог бы представить другой подобный пример, используя шаблон Factory вместо вызова статического метода.

Ответы [ 2 ]

1 голос
/ 19 декабря 2011

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

0 голосов
/ 19 декабря 2011

Опять же, это зависит от поведения рассматриваемых классов, но если был другой Class_C, например, который также использовал статический метод Class_B, вы могли бы рассмотреть возможность использования Class_A и Class_C продлить Class_B. Дополнительную информацию можно найти на странице наследования объектов php .

...