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

    +159

    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
    43. 43
    44. 44
    45. 45
    46. 46
    47. 47
    48. 48
    49. 49
    50. 50
    51. 51
    52. 52
    53. 53
    54. 54
    55. 55
    56. 56
    57. 57
    class Request_BrowserDetector
    {
      public static function singleton()
      {
        if (null === self::$_instance)
        {
          self::$_instance = new self;
        }
        
        return self::$_instance;
      }
      
      protected static $_instance = null;
    
      public function __construct()
      {
        $this->_sigs = Application::singleton()->cfg('request.browser.signatures');
      }
      
      public function detect($str)
      {
        if (isset($this->_cache[$str]))
        {
          $out = $this->_cache[$str];
        }
        else
        {
          $notFound = true;
          
          foreach ($this->_sigs as $k => $v)
          {
            if (false !== strpos($str, $k))
            {
              $out = $v;
              $notFound = false;
              break;
            }
          }
          
          if ($notFound)
          {
            $out = $this->_escape($str);
          }
          
          $this->_cache[$str] = $out;
        }
        
        return $out;
      }
      
      protected function _escape($str)
      {
        return mysql_real_escape_string($str);
      }
      
      protected $_sigs, $_cache = array();
    }

    синглетон такой, синглетон

    Запостил: seonull, 20 Октября 2010

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

    • Забавненько.
      Ответить
    • Э, а копирайты? =)
      Ответить
      • Точно. Хотя бы знать: в разработке или работает.
        Ответить
        • Я не проверял даже. Набрал и сразу кинул.
          Ответить
      • пожалуй это тот случай, когда автору выгодней оставаться неизвестным. :)
        Ответить
        • Если всё равно запалят, палиться лучше самому, проверено =)
          Ответить
    • да тут целый синглтон-фреймворк, с блекджеком и шлюхой.
      Ответить
    • Вообще надо было хранить кэш в базе (обязательно с использованием ActiveRecord).
      Ответить
      • Ещё лучше паттерн "фабрика", куча кэш-бэкендов (файлы, база, memcached, eAccelerator...), каждый обязательно в отдельном PHP-файле. Так будет ещё гибче и расширяемее.
        ...спустя два месяца, когда число комментов перевалило за 9000, раздался голос свыше: "ребята, да вы же написали Zend Framework!"
        Ответить

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