В 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
Айфон мало держит заряд, разбираемся с проблемой вместе с AppLab
Перевод документов на английский язык: Важность и ключевые аспекты
Пытаюсь изменить значение текстового поля из другого потока, но почему-то не работает: Есть 2 окна, первое окно:
Укажите вывод программы (“comp”, если программа не скомпилируется и “err”, если произойдет ошибка при исполнении):