Если вы используете объекты SimpleXML, в него уже встроен метод attributes
(без знака @
) - используйте его так: $product->attributes('part_number');
Если вы пытаетесь создать свои собственные объекты для сопоставления с XML, то, как вы уже выяснили, вы не можете использовать символ @
в имени переменной PHP (или любой другой символ, кроме подчеркивания).
Я бы предложил просто использовать $product->attributes['part_number']
(т.е. вообще без символа @
) и отобразить его внутри своего класса.
Если вам действительно нужно сопоставить его с именами переменных, лучшее, на что вы можете надеяться, это какая-то строка замены, которую вы можете поменять местами при преобразовании между двумя форматами.
Например: $product->at__attributes['part_number']
Но это не очень хорошее решение, ИМХО.