Почему функции наследуются только в одном направлении, когда CFC расширяют друг друга? - PullRequest
0 голосов
/ 16 февраля 2011

У меня есть следующие два CFC:

component extends="Controller" displayName="foo" {
    public void function minifoo() {
    }
}

component extends="Foo" displayName="bar" {
    public void function minibar() {
    }
}

Я знаю, что любые функции, присутствующие в Foo.cfc, будут доступны Bar.cfc.Но, похоже, обратное неверно.Могу ли я сделать функции в Bar.cfc также доступными для Foo.cfc?Или наследование работает только в одном направлении?

Ответы [ 2 ]

5 голосов
/ 16 февраля 2011

Наследование работает только в одном направлении, как следует из названия.Отцу немного трудно унаследовать сына.;)

Если у вас есть некоторые общие функции, которые вы хотите сделать широко доступными, вам, вероятно, нужно взглянуть на какую-то форму вспомогательного или зависимого внедрения.

Если это не распространено, но специфично для родителей иЕсли вы используете CFC, то вам, возможно, нужно взглянуть на структуру вашего приложения, взаимосвязь между этими двумя CFC и на то, где реально функционирует эта функция.

4 голосов
/ 16 февраля 2011

нет, наследование не работает таким образом.

Попробуйте Depenancy Injection, в основном ...

f = new Foo();
b = new Bar();
f.setBar(b);
b.setFoo(f);

И фреймворк, такой как ColdSpring, Lightwire или Wirebox, может помочь вам в этом, если вам нужно.

Тогда они могут разговаривать друг с другом, но вы должны подумать, что это тяжело, если вы действительно этого хотите. Может быть, вы хотели бы оформить их по-другому.

...