Попробуйте это
var_dump($this->helper('catalog/image')->init($_child_products[$i], 'image'));
var_dump($this->helper('catalog/image')->init($this->getProduct(), 'image', $_image->getFile());
Я предполагаю, что каждый из вышеприведенных операторов var_dump
выведет объект PHP в браузер / среду вывода (или может вызвать фатальную ошибку «исчерпание памяти»).если у вас не установлен xDebug).
Теперь попробуйте это
var_dump((string) $this->helper('catalog/image')->init($_child_products[$i], 'image'));
var_dump((string) $this->helper('catalog/image')->init($this->getProduct(), 'image', $_image->getFile());
Вы должны увидеть ваши идентичные строки.Метод init
возвращает объект, что означает, что при проверке равенства вы проверяете качество на вспомогательных объектах .В Magento объекты, созданные как помощники, фактически являются одиночными, что означает, что множественные экземпляры возвращают один и тот же объект, что и проверяется на равенство объектов.
Когда вы приводите эти объекты в виде строк (с (string)
), PHP преобразует объект в строку (используя метод __toString
, определенный для объекта.
Когда вы используетеобъект в «строковом контексте» (в выражении echo или print, или где-то еще, PHP ожидает строку), PHP автоматически приведёт объект как строку.
Поэтому, если вы хотите выполнить проверку на равенство, приведитесначала объекты в виде строк.
if ((string)$this->helper('catalog/image')->init($_child_products[$i], 'image') == (string)$this->helper('catalog/image')->init($this->getProduct(), 'image', $_image->getFile()) ){
echo 'true';
}