На это сайт пока нет времени. Хочу когда-нибудь переделать.

Bitrix и Coldfusion или живые мертвецы

Это писалось 1 год назад, и надо бы перепилить и переосмыслить эти статьи


Каждый уважающий себя разработчик хочет работать с технологиями которые можно легко поддерживать, быстро в них разобраться и расти по карьерной лестнице. В этой статье пойдёт речь о продуктах, которые навряд-ли умрут в ближайшие 10 лет однако сам факт их существование только огорчает, вводит в ступор и невольно заставляет покрутить пальцем у виска с мыслью «Да кто этот говнокод  вообще придумал!!!». Да вы правильно догадываетесь, речь пойдёт о Bitrix и Coldfusion или живых мертвецах.

Наверняка многие из вас часто встречали вакансии где от вас требую знания битрикса или даже наличия сертификата по нему. Эти вакансии могут обеспечить вас работой, но никогда не обеспечат самым важным, а именно чувством собственного достоинства. Казалось бы что это не логично быть востребованным, и в то же время презираемым специалистом. Однако всё как раз складно, ведь вам никто не завидует, так знающие люди понимают что ваш код выглядит примерно вот так:

<?foreach($arResult["ITEMS"] as $arItem):?>
    <?
$this->AddEditAction($arItem['ID'], $arItem['EDIT_LINK'], CIBlock::GetArrayByID($arItem["IBLOCK_ID"], "ELEMENT_EIT"));
$this->AddDeleteAction($arItem['ID'], $arItem['DELETE_LINK'], CIBlock::GetArrayByID($arItem["IBLOCK_ID"], "ELEMENT_DELETE"),
array("CONFIRM" => GetMessage('CT_BNL_ELEMENT_DELETE_CONFIRM')));
    ?>
    <?$fileImage = CFile::GetPath($arItem["PROPERTIES"]["BANER"]["VALUE"]);?>
    <?if($arParams["DISPLAY_NAME"]!="N" && $arItem["NAME"]):?>
        <?if(!$arParams["HIDE_LINK_WHEN_NO_DETAIL"] || ($arItem["DETAIL_TEXT"] && $arResult["USER_HAVE_ACCESS"])):?>
        <style>
            body{
                background: linear-gradient(to top, #<?echo $arItem['DISPLAY_PROPERTIES']['GRADIENT_2']['VALUE'];?>, #<?echo $arItem['DISPLAY_PROPERTIES']['GRADIENT_1']['VALUE'];?>);
            }
            .mainbaner{
                background: url("<?=$fileImage?>");
            }
        </style>
        <a href="<?echo $arItem['DISPLAY_PROPERTIES']['BANER_LINK']['VALUE'];?>" class="mainbaner" target="_blank">
        </a>
        <?endif;?>
    <?endif;?>
<?endforeach;?>

Как вы верно заметили сложно гордиться таким кодом :) Да это это именно она — лапша, по рецепту многофункциональное ядро D7. Такой код может вдохновить любого разработчика на дальнейшую работу и развитие. Видя этот код ни найдётся работодателя который бы вас не боготворил и не звал к себе как великого гуру говнокода. Это всё шутки конечно, ну а если говорить серьёзно, то перейдём в следующий абзац.

Из личного опыта работы с битрисом


Итак Битрикс был написан на php 5.3 т.е. именно на той версии которую так не любят C и pyton разбаботчики,  и не зря ведь у языка на тот момент не было многих возможностей, да и создавался он не для таких масштабных целей в которых стал активно использоваться. На текущий момент Битрикс якобы совместим с php 7 однако, куча модулей которые есть в маркетплейсе php 7 не поддерживают. Кстати маркетплейс, это вообще отдельная история, там буквально нет хороших решений! Я скачивал многие платные и бесплатные модули, один из модулей по геолокализации вообще сео поломал, мы только через 3 месяца заметили что сайт перестал индексироваться поисковиками, а за ведь модуль деньги были отданы! Хотя конечно был один хороший модуль по сжатию изображений, но он всего один. Версии которые предлагаются для покупки типа аля бизнес класс, вообще нет смысла покупать, начальство купило данный пакет, но когда я на него взглянул, переплевался и весь каталог компаний написал по своему. Когда дело доходило до авторизации, то на форумах бывали вопросы 9-летней давности, где каждый год спрашивали о проблеме и она не решалась. Так же по сео ваш url не может быть длиннее по-моему 50-символов, а если вам приспичило длиннее то вы не сможете не нарушая лицензионного соглашения, решить эту проблему.

ВЫВОД
В соей карьере, я ни о чём так не жалею как о времени которое я потратил на битрикс. Если бы я изучал фреймворк Symfony или Yii или любой объектно ориентированный, то съэкономил бы год жизни.

Напоследок хочется добавить пару слов об уникальной архитектуре которая не содержит единой точки входа, и выглядит примерно так как на картинке внизу:

Архитектура Битрикс