Какие способы существуют для упрощения кода?

Здравствуйте! <br/> <br/> Для настройки изображений под различные размеры экранов на моем сайте, я использую следующий фрагмент кода. <br/> <br/> <b>Первый:</b> <br/> <pre><code class="php">&lt;?if(!empty($arItem["PREVIEW_PICTURE"])){
$file_w400 = CFile::ResizeImageGet($arItem["PREVIEW_PICTURE"], array('width'=&gt;400, 'height'=&gt;10000), BX_RESIZE_IMAGE_PROPORTIONAL, true);  
$file_w600 = CFile::ResizeImageGet($arItem["PREVIEW_PICTURE"], array('width'=&gt;600, 'height'=&gt;10000), BX_RESIZE_IMAGE_PROPORTIONAL, true);  
$file_w800 = CFile::ResizeImageGet($arItem["PREVIEW_PICTURE"], array('width'=&gt;800, 'height'=&gt;10000), BX_RESIZE_IMAGE_PROPORTIONAL, true);  
$file_w900 = CFile::ResizeImageGet($arItem["PREVIEW_PICTURE"], array('width'=&gt;900, 'height'=&gt;10000), BX_RESIZE_IMAGE_PROPORTIONAL, true);  
$file_w1000 = CFile::ResizeImageGet($arItem["PREVIEW_PICTURE"], array('width'=&gt;1000, 'height'=&gt;10000), BX_RESIZE_IMAGE_PROPORTIONAL, true);  
$file_w1200 = CFile::ResizeImageGet($arItem["PREVIEW_PICTURE"], array('width'=&gt;1200, 'height'=&gt;10000), BX_RESIZE_IMAGE_PROPORTIONAL, true);  
$file_w1400 = CFile::ResizeImageGet($arItem["PREVIEW_PICTURE"], array('width'=&gt;1400, 'height'=&gt;10000), BX_RESIZE_IMAGE_PROPORTIONAL, true);  
$file_w1500 = CFile::ResizeImageGet($arItem["PREVIEW_PICTURE"], array('width'=&gt;1500, 'height'=&gt;10000), BX_RESIZE_IMAGE_PROPORTIONAL, true);  
$file_w1600 = CFile::ResizeImageGet($arItem["PREVIEW_PICTURE"], array('width'=&gt;1600, 'height'=&gt;10000), BX_RESIZE_IMAGE_PROPORTIONAL, true);  
$file_w1800 = CFile::ResizeImageGet($arItem["PREVIEW_PICTURE"], array('width'=&gt;1800, 'height'=&gt;10000), BX_RESIZE_IMAGE_PROP
  • 24 октября 2024 г. 14:42
Ответы на вопрос 2
Для упрощения вашего кода и улучшения его читаемости можно использовать массив для хранения нужных ширин и цикл для генерации изображений. Это поможет избежать дублирования кода и упростит изменения в будущем.

Вот пример того, как можно оптимизировать ваш фрагмент кода:

```php
<?php
if (!empty($arItem["PREVIEW_PICTURE"])) {
    $widths = [400, 600, 800, 900, 1000, 1200, 1400, 1500, 1600, 1800];
    $files = [];

    foreach ($widths as $width) {
        $files["w$width"] = CFile::ResizeImageGet(
            $arItem["PREVIEW_PICTURE"],
            ['width' => $width, 'height' => 10000],
            BX_RESIZE_IMAGE_PROPORTIONAL,
            true
        );
    }

    // Теперь вы можете использовать массив $files для доступа к изображениям
    // Например:
    // echo '<img src="'.$files["w600"]["src"].'" alt="Превью" />';
}
?>
```

### Преимущества такого подхода:

1. **Меньше строк кода**: Код стал короче и более компактным.
2. **Легче в изменении**: Если вам нужно добавить новую ширину, просто добавьте её в массив `$widths`.
3. **Улучшенная читаемость**: Сложная логика, связанная с созданием изображений, теперь упрощена, что облегчает понимание кода.
4. **Гибкость**: Легче управлять параметрами и их значениями.

Таким образом, использование массива и цикла позволяет значительно упростить и улучшить ваш код.
Сложи переменные и значения 'width' в массив и проходись по нему циклом, вставляя эти значения в вызываемый метод
Похожие вопросы