Behavior function call mismatch

Hi everybody!

This morning I have noticed a strange thing happened on my Yii2 basic app:

I have a User model that have attached a behavior: I have declared a static function inside the User class that takes one argument. In the behavior class I have declared a non-static function which have the same name of the previously mentioned function but without any argument:

class User extends \yii\db\ActiveRecord implements IdentityInterface



   * @inheritdoc


  public static function tableName() {

    return '{{%user}}';


  public function behaviors() {

    return [


        'class' => UserRoleBehavior::className(),





  public static function getRoleDescription($role) {

     //do something



class UserRoleBehavior extends Behavior 


  public function getRoleDescription() {

    //do something else



So far so good. However if I try to call the behavior non-static function from an User class object

$model = new User();


I got the following error:

PHP Warning – yii\base\ErrorException Missing argument 1 for app\models\User::getRoleDescription()

It seems like Yii is trying to call the static function in place of the other one, even if I have used the right syntax

$model->getRoleDescription(); //instead of User::getRoleDescription();

I know I can solve this issue by just assigning different names on the two functions, but I thought the differentiation between static and non-static would select the right one, could it be regarded as a bug?

It’s not Yii but the PHP interpreter.