В Yii2 есть понятие behaviors, подключение к модели которого добавляет к классу функции, описанные в этом behavior.
А можно ли проверить для объекта is_callable или method_exists наличие этого метода? Ведь метод не описан явно в классе, а внедрен через behavior.
Очевидно, что в том время как трейты являются стандартным средством расширения функционально классов на уровне языка, то behaviours являеются надстройкой фреймворка. В связи с этим знаниями и инструментариями о том имеется ли у объекта данный метод, должен обладать сам объект, к которому поведение подключается. То есть если класс может подключать поведения, то, очевидно, должен знать какие поведения подключены, и какими методами они его наделяют.
Для определения, имеет ли компонент метод, полученный от поведения, используйте Component::hasMethod()
Returns a value indicating whether a method is defined.
A method is defined if:
- the class has a method with the specified name
- an attached behavior has a method with the given name (when $checkBehaviors is true).
т.е. hasMethod() определяет наличие искомого метода среди членов класса, а также среди методов подключенных поведений.
зы: познакомился с Yii :D
Сборка персонального компьютера от Artline: умный выбор для современных пользователей