1. PHP / Говнокод #27332

    +1

    1. 01
    2. 02
    3. 03
    4. 04
    5. 05
    6. 06
    7. 07
    8. 08
    9. 09
    10. 10
    11. 11
    12. 12
    13. 13
    14. 14
    15. 15
    16. 16
    17. 17
    18. 18
    19. 19
    20. 20
    21. 21
    22. 22
    23. 23
    24. 24
    25. 25
    26. 26
    27. 27
    28. 28
    29. 29
    30. 30
    31. 31
    32. 32
    33. 33
    34. 34
    35. 35
    36. 36
    37. 37
    38. 38
    39. 39
    40. 40
    41. 41
    42. 42
    // если пользователь авторизован
    if($user->get('id')) { 
        $_SESSION['city-select'] = '';
        // если пользователь авторизован - определяем город
        $profile = $user->getOne('Profile');
        if ($profile) {
            $city = $profile->get('city');
        }
        
        // проходим все города и ищем подходящий
        $cities = $modx->runSnippet('pdoResources', array(
            'parents' => 205,
            'limit'   => 0,
            'includeTVs' => 'setCityForHome',
            'where'   => '{ "template" : "25" }',
            'tpl'     => '@CODE:{"id":"[[+id]]","city":"[[+tv.setCityForHome]]"}',
            'outputSeparator' => ','
        ));
        $redirectTo = 0;
        if($cities) { 
            $cities = $modx->fromJson('['.$cities.']');
            foreach( $cities as $c ) {
                if($c['city'] == $city) {
                    $redirectTo = $c['id'];
                    break;
                }
            }    
        }
    } else {
        // если не авторизован - проверяем сессию
        
        $session = $_SESSION['city-select'];
        
        // если сессия пустая - проверяем, на какой странице находимся
        // если страница города и пустая сессия - записываем в сессию
        if($modx->resource->get('template') == 25) {
            $_SESSION['city-select'] = $modx->resource->get('pagetitle');
            $city = $modx->resource->get('pagetitle');
        } else {
            $city = (!empty($_SESSION['city-select']))? $_SESSION['city-select'] : $city;
        }
    }

    Сумрачный гений, сука. Строки 11-28 особенно примечательны.

    Запостил: CatScratchFever, 31 Марта 2021

    Комментарии (10) RSS

    • SQL — для старых пердунов. ORM, в принципе, тоже.
      Ответить
      • Сейчас модно писать всё руками в key-value базу?
        Ответить
        • Что такое база? Это типа джсона в файле что-то?

          ~спрыснул смузи~
          Ответить
      • Правильно, будущее за mnesia. У нас в `mnesia' нет никакого `ORM', поэтому я за неё. Щас прикрутим к ней eventual consistency и будет web-scale.
        Ответить
    • По-моему идея нежизнеспособна. PHP любят не за какие-то его классные фишки (кстати, какие?) а как раз за его обратную совместимость. На нём работает всё то же, что работало и 10 лет назад и 20, только ворнинги выключить. Почти как джава, только классов поменьше, а строк побольше. И вот на этом пункте «PHP 10 — end of life для legacy расширения» бизнес скажет, что не будет тратить деньги на удовлетворение эстетических потребностей программистов, а во многих случаях и вовсе не имеет такой возможности, и старый код будет поддерживать на старой ветке сколько получится, а новый писать на чём-то без таких сюрпризов, и ещё и на серверах сэкономит
      Ответить
      • Так обратной совместимости уже давно нет. В каждом ежегодном релизе PHP ещё со времён PHP 5 есть ломающие изменения. У меня есть проекты застрявшие кажется на PHP 5.3, потому что они больше не развиваются, а выделять отдельно время на их переписывание не хочется.

        Другое дело, что изменения довольно минимальны, и если вы с самого начала писали код качественно, не увлекаясь например преобразованием строк типа «abc» в int и не пытаясь получить $foo['bar'] где $foo === null, есть шанс что вы их вообще не заметите.
        Ответить
        • Почему ты споришь с собой?

          Кстати, а что за расширение там выпилилили? mysql?
          Ответить
          • То есть guest6 можно с собой спорить, а мне нельзя? >:[

            А про расширение не знаю, мне просто комменты понравились, особенно:

            > PHP любят не за какие-то его классные фишки а как раз за его обратную совместимость

            > Так обратной совместимости уже давно нет
            Ответить
            • Так и в джаве её уже нет, разве не так?
              Ответить
              • И в джабе уже сломали её? Капец. Я только помню, что там fx-чтототам убрали из библиотеки стандартной и ещё постоянно ломали другую гуйню.

                Кстати, у меня в IDE bluefish, если я правильно помню название, есть кнопка «python 2 --> 3», который переводит print'ы в print()'ы.
                Ответить

    Добавить комментарий