В конструкторе для Inventory
у вас есть
$user_gender = Character::getGenderStatic();
Это создает новую переменную, которая ограничена конструктором.Вы, вероятно, имеете в виду
$this->user_gender = Character::getGenderStatic();
, который относится к защищенной переменной объекта Inventory, которую вы определили в начале класса.
Я не вижу ничего плохого в том, как вы 'Вы используете статические функции, за исключением того, что вы не установили значение для Character::$gender
(защищенная статическая переменная, которую вы определяете в начале класса символов), но я предполагаю, что вы установили это где-то еще.