Два виджета с одинаковым именем, но в разных папках

У меня есть два виджета с именем MyWidget.

Один лежит в protected/components/MyWidget.php

Второй в protected/widgets/MyWidget.php

Виджеты вызываю так:

Первый так: $this->widget(‘application.widgets.MyWidget’, array(‘paramAAA’=>123));

Второй так: $this->widget(‘application.components.MyWidget’, array(‘paramBBB’=>456));

Если в одном views вызвать сначала один виджет, а потом второй, то Yii вызывает вместо второго первый и выводит сообщение, что у него нет параметра paramBBB (а его в первом виджете и нет).

Получается, что после вызова первого виджета, Yii как бы кеширует путь до него и игнорирует путь при следующем вызове.

Если вызывать виджеты по одиночке, то все работает.

Как бороться с этим? Это баг или что-то не так делаю?

Если виджеты не внутри namespace’ов, то у вас в любом случае ничего не получится, т.к. имена классов должны быть уникальными. Так что либо давайте им разные имена, либо поместите классы в соответствующие путям пространства имён (namespace application\widgets).

А как поместить классы в разные пространства имен?

Для начала, видимо, нужно прочитать вот это, раз возникает такой вопрос: http://ru2.php.net/manual/ru/language.namespaces.rationale.php :)

А потом ещё вот здесь чуть-чуть: http://www.yiiframework.com/doc/guide/1.1/ru/basics.namespace#sec-6