Вы можете использовать магические has*()
вызовы с каждым классом, расширяющим Varien_Object
, чтобы проверить, существует или нет данное свойство.
Кроме того, Varien_Object
предлагаетнемагический hasData('property_name')
метод.
Метод hasData()
в основном делает то же самое, только косвенно - то есть, передавая имя свойства в качестве аргумента методу, вместо того, чтобы использовать его как часть в верблюдеимя метода.
Mage_Customer_Model_Customer
и Mage_Customer_Model_Address
действительно расширяют Varien_Object
, поэтому вы можете вызвать hasData('street')
для экземпляра объекта, чтобы проверить существование такого свойства и использовать результат для вашего if/else
сценарий.
Вы также можете волшебным образом вызывать hasStreet()
, но в вашем случае вариант hasData()
определенно будет работать лучше (так как вы выполняете цикл по массиву с именами переменных).
Обратите внимание, что hasData()
может помочь вам отличить уникальные имена свойств.Конечно, вы не можете использовать hasData()
для различения свойств с одинаковыми именами, существующих в обоих классах (например, 'entity_id'
).