Вызов файлов шаблонов Magentoдля каждой строки - PullRequest
1 голос
/ 18 мая 2011

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

Вот пример:

<ul class="links<?php if($iecheckout):?> <?php echo $iecheckout ?><?php endif;?>"<?php if($this->getName()): ?> id="<?php echo $this->getName() ?>"<?php endif;?>>
<?php foreach($_links as $_link): ?>
    <?php if ($_link instanceof Mage_Core_Block_Abstract):?>
        <?php echo $_link->toHtml() ?>
    <?php else: ?>
        <li<?php if($_link->getIsFirst()||$_link->getIsLast()): ?> class="<?php if($_link->getIsFirst()): ?>first<?php endif; ?><?php if($_link->getIsLast()): ?> last<?php endif; ?>"<?php endif; ?> <?php echo $_link->getLiParams() ?>><?php echo $_link->getBeforeText() ?><a href="<?php echo $_link->getUrl() ?>" title="<?php echo $_link->getTitle() ?>" <?php echo $_link->getAParams() ?>><?php echo $_link->getLabel() ?></a><?php echo $_link->getAfterText() ?></li>
    <?php endif;?>
<?php endforeach; ?>
</ul>

, поэтому в этом примере много стартов и остановок вокруг секций, которые не нужно разбивать.например, с последними двумя строками, зачем вызывать «поставить» в каждой строке?Это отдельно от того, как система читает эти файлы?Хотя я знаю, что это должно увеличить файловое пространство (все это будет минимально, но с 18k-файлами, которые он складывает), PHP занимает больше времени для интерпретации этих файлов, когда вы запускаете теги PHP и останавливаете их снова и снова.Magento - огромная система, и я уверен, что любое повышение производительности может быть полезным.

не имеет ли смысла иметь блок

<?php foreach($_links as $_link): ?>
    <?php if ($_link instanceof Mage_Core_Block_Abstract):?>
        <?php echo $_link->toHtml() ?>
    <?php else: ?>
        <li<?php if($_link->getIsFirst()||$_link->getIsLast()): ?> class="<?php if($_link->getIsFirst()): ?>first<?php endif; ?><?php if($_link->getIsLast()): ?> last<?php endif; ?>"<?php endif; ?> <?php echo $_link->getLiParams() ?>><?php echo $_link->getBeforeText() ?><a href="<?php echo $_link->getUrl() ?>" title="<?php echo $_link->getTitle() ?>" <?php echo $_link->getAParams() ?>><?php echo $_link->getLabel() ?></a><?php echo $_link->getAfterText() ?></li>
    <?php endif;?>
<?php endforeach; ?>

, похожий на

<?php 
foreach($_links as $_link): 
    if ($_link instanceof Mage_Core_Block_Abstract):
         echo $_link->toHtml() 
    else:
    ?> 
        <li<?php if($_link->getIsFirst()||$_link->getIsLast()): ?> class="<?php if($_link->getIsFirst()): ?>first<?php endif; ?><?php if($_link->getIsLast()): ?> last<?php endif; ?>"<?php endif; ?> <?php echo $_link->getLiParams() ?>><?php echo $_link->getBeforeText() ?><a href="<?php echo $_link->getUrl() ?>" title="<?php echo $_link->getTitle() ?>" <?php echo $_link->getAParams() ?>><?php echo $_link->getLabel() ?></a><?php echo $_link->getAfterText() ?></li>
    <?php 
    endif;
endforeach; ?>

Имеет ли это смысл?Это просто для имитации какого-то макета типа HTML?По мере того, как я все больше привыкаю к ​​этой системе, я должен писать шаблоны в этой усадьбе, даже если она выглядит сложнее для чтения?

Спасибо за любую информацию, которую может дать каждый.

1 Ответ

2 голосов
/ 18 мая 2011

Причина, по которой я использую следующее в шаблонах (не контроллеры, модели и т. Д.):

<?php if ($condition): ?>
    <?php foreach($items as $item): ?>

    <?php endforeach ?>
<?php endif ?>

Вместо:

<?php if ($condition):
    foreach($items as $item): ?>

<?php endforeach;
endif; ?>

исключительно для удобства чтения.

Что касается влияния на производительность открывающих и закрывающих тегов, к которым, как представляется, сводится ваш вопрос, вы можете проверить Открытие / закрытие тегов и производительность? .

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...