Как записать PHP код в файл, но не выполнять его при записи

211
01 июня 2018, 09:30

Записываю (кэширую) небольшое кол-во товаров (хитов) в файл при помощи функции:

file_put_contents($file, serialize($content)).

При записи присутствуют HTML код и сам PHP код в небольшом количестве. Цена для товара выводится так: <?=$hit->price;?>. Соответственно этот код надо выполнить при записи, что сейчас и происходит, но в начале записываемой информации в файл, присутствует строка:

<?php $currency = \system\App::$result->get('currency'); ?>

и в самом файле уже вывод значения: <?=$currency['value'];?>

$currency - это массив с активной валютой на сайте. Получается, если этот код отработает при записи файла, что сейчас и происходит, то при смене валюты,

<?=$currency ['value'];?> - уже не отработает, т.к. эта строчка кода уже отработала при записи.

Как можно записать и не выполнять при записи эти строчки кода?:

 <?php $currency = \system\App::$result->get('currency'); ?>
 <?=$currency['value'];?>

соответственно, когда будет подключаться готовый кэшированный файлик при обновлении страницы, будут выполняться эти строки кода каждый раз.

Может кто знает. Возникает идея, обрамления нужного PHP кода, но как не знаю и поможет ли это вообще тоже не знаю:)

UPDATE:

<?php if(isset($data['hits'])): ?>
   <?php $currency = \system\App::$result->get('currency'); ?>
   <div class="section-product-hits">
      <?php foreach($data['hits'] as $hit): ?>
         <div class="product-price">
            <?php if(!$hit['discount_price']): ?>
               <span class="price">
                  <?=$currency['symbol_left'];?> <?=$hit->price / $currency['value'];?>
               </span>
            <?php else: ?>
               <?=$currency['symbol_left'];?> <span class="price"><?=$hit->discount_price / $currency['value'];?></span> 
               <?=$currency['symbol_left'];?> <span class="old-price"><?=$hit->price / $currency['value'];?></span>
            <?php endif; ?>
         </div>
      <?php endforeach; ?>
   </div>
<?php endif; ?>
Answer 1
<?php if(isset($data[hits])): ?>
   <?php $currency = \system\App::$result->get("currency"); ?>
<?php ob_start() ?>
   <div class="section-product-hits">
      <?php foreach($data[hits] as $hit): ?>
         <div class="product-price">
            <?php if(!$hit[discount_price]): ?>
               <span class="price">
                  <?=$currency[symbol_left];?> <?='<?=$hit->price / $currency[value];?>'?>
               </span>
            <?php else: ?>
               <?=$currency[symbol_left];?> <span class="price"><?=$hit->discount_price / $currency[value];?></span> 
               <?=$currency[symbol_left];?> <span class="old-price"><?=$hit->price / $currency[value];?></span>
            <?php endif; ?>
         </div>
      <?php endforeach; ?>
   </div>
<?php 
$content = ob_get_flush();
file_put_contents($file, $content).
?>
<?php endif; ?>';

В комментарии не влезало, пихну в ответ)

READ ALSO
Как посчитать сумму числовых значений в столбце?

Как посчитать сумму числовых значений в столбце?

как посчитать сумму числовых значений в столбце 'cost' из таблицы MySql, чтобы в переменную заносилось в данном случае значение 4850 и выводилась?

228
Magento 2. Renderer

Magento 2. Renderer

Всем приветВезде о magento 2 пишут, что есть 2 способа создания grid

155
Отправка документа в ВК, через cURL

Отправка документа в ВК, через cURL

Как мне кажется верно, но файл не отправляется и $curl_result пустойГде может быть ошибка?

189
Функция вывода записей с условием по дате

Функция вывода записей с условием по дате

В БД MySql есть столбец 'created_at' с датой и временем

170