Добрый день. Столкнулся с проблемой, скорее всего элементарной для знающего php, но все мои потуги решить вопрос, не увенчались успехом. Есть php файл, который формирует на выходе фид по товарам опенкарт, нужен для передачи полученных данных в турбо-страницы Яндекса. Т.к. это тема Яндекса, изначально обратился к ним, они сказали, что то что сделано, то сделано, вопросами доработок не занимаются. Вот код php выводящий данные о валюте (мне здесь нужен параметр "rate"): Код (Text): protected function generateCurrencies(ShopInfo $shopInfo) { $currencies = $shopInfo->getCurrencies(); if (empty($currencies)) { return ''; } $result = ' <currencies>' . PHP_EOL; foreach ($currencies as $currency) { $plus = $currency->getPlus() ? ' plus="'.$currency->getPlus().'"' : ''; $result .= ' <currency id="'.$currency->getId().'" rate="'.$currency->getRate().'"'.$plus.' />'.PHP_EOL; } $result .= ' </currencies>' . PHP_EOL; return $result; } Вот что выводит данная функция, мне здесь интересна цифра - 92, это так сказать курс. Код (Text): <currencies> <currency id="EUR" rate="92" plus="1"/> </currencies> Следующая часть кода выводит товарную позицию (не вывожу весь код, т.к. он большой, меня здесь интересует цена): Код (Text): protected function generateOffer(Offer $offer) { . . . $result .= ' <price>' . $offer->getPrice()*92 . '</price>' . PHP_EOL; . . . Так вот вместо цифры 92, которую сейчас я вписываю вручную, я хочу сюда получить rate из выше указанной функции.
создай свойство записывай туда свой рате без/с по айди, нейм ключами создай метод getRate Вызывай getRate после generateCurrencies в чем проблема ? --- Добавлено --- Перестраивай класс. У тебя фарш очевидный
если б я в этом настолько глубоко разбирался... всё что смог умножить на цифру требуемого курса Честно сказать даже не очень понимаю как сделать вышеописанное вот это не понимаю - /записывай туда свой рате без/с по айди, нейм ключами/ /Перестраивай класс. У тебя фарш очевидный/ Это не мой фарш, это php-шник Яндекса, а я пытаюсь для себя его автоматизировать
что-то типа этого? Код (Text): public $kurs = $rate; public function dgetRate() { echo $this->$kurs; }
что не работает? понятие о синтаксисе php хоть есть? ошибки умеете смотреть? Код (Text): public $kurs = $rate; не проканает.... Код (Text): public $kurs; потом в конструкторе, или методе сеттера Код (Text): $this->kurs = 92;
Ладно, закрываем тему, я в начале сообщения явно дал понять, что php не знаю, только на уровне примеров и методом проб и ошибок. ошибки смотреть не умею, конструкторами и сеттерами не пользовался никогда. Попробую найти форум, где на пальцах объяснят, извините за ваше потраченное время
перефразируя на авто.... - пацаны надо в движке поршни отрегулировать - никогда там ничего не делал, могу открыть капот и залить масло, могу тряпочкой протереть. - ну снимаешь верхнюю часть двигателя. потом проверяешь прокладки, меняешь сальники, вытаскиваешь поршня, измеряешь штангенциркулем, штангенциркулем пользоваться умеешь? - нет, я ж сказал, что новичок и нечего в этом не понимаю.... плохой форум, непонятный... пойду на дургой... где кашку пожуют и в ротик положат, а учится и знания добывать - не по мне
примерно так и есть, не моя тема - php, провозился 2 дня с этой проблемой, понял, что самому не разобраться, написал сюда, благо форум именно по php. почитал ответы, попробовал как подсказали, ничего не вышло, буду дальше копать за ответы конечно отдельное спасибо
PHP: <?php $xml = simplexml_load_string('<currencies> <currency id="EUR" rate="92" plus="1"/> </currencies>'); $result = $xml->xpath("//currency[@id='EUR']"); foreach ( $result[0]->attributes() as $key => $value ) { echo "$key: $value <br/>"; } ?>
@lesha73, вот простенький примерчик. Вкратце: делаем класс-наследник, в котором переопределяем два метода и добавляем одно свойство и метод получения данных из этого свойства. В методе generateCurrencies() - заполняем наше свойство (массив курсов валют) и вызываем "родительский" метод. Метод generateOffer() полностью копируем из исходного класса и добавляем умножение на курс валюты --- Добавлено --- Соответственно, в "Есть php файл, который формирует на выходе фид по товарам опенкарт" заменяем использование исходного класса на класс-наследник
Вот это круто, в примере, прямо как из моего проекта, верхние классы в отдельных файлах, но примерно такие и есть. Буду пробовать, когда доберусь до компа.
Всё получилось, спасибо ВСЕМ огромное спасибо. Все без исключения подсказывали правильное решение, правда с учетом моего абсолютного незнания тонкостей программирования, я не понимал что, куда и как... Отдельное спасибо @Sail - "разжевал и в рот положил" @ADSoft - форум отличный, понимаю Ваше негодование. Приходят тут всякие типа меня, и всё хотят сразу получить на блюдечке с голубой каемочкой, когда возьми да выучи. Но я не ради изучения спрашивал, мне разово надо было решить проблему, возможно, я немного разобрался что такое свойство, что такое метод, какие команды это всё делают, но понял это на примерах от @Sail и скорее всего больше никогда не столкнусь с данной ситуацией.