"PHP" / Говнокод #8740 Ссылка на оригинал

0

  1. 1
  2. 2
  3. 3
  4. 4
  5. 5
  6. 6
  7. 7
  8. 8
  9. 9
  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
  58. 58
  59. 59
  60. 60
  61. 61
  62. 62
  63. 63
  64. 64
  65. 65
  66. 66
  67. 67
  68. 68
  69. 69
  70. 70
  71. 71
  72. 72
  73. 73
  74. 74
  75. 75
  76. 76
  77. 77
  78. 78
  79. 79
  80. 80
  81. 81
  82. 82
  83. 83
  84. 84
  85. 85
  86. 86
  87. 87
  88. 88
function &_static($name = null, $value = null, $unsetVal = false) {
  static $data = array();
  $null = null;
  if (is_array($name)) {
    $data = $name;
    return $null;
  }
  $state = 0;
  $args = array($name, $value, $unsetVal);
  while (count($args)) {
    $arg = array_shift($args);
    switch ($state) {
      case 0:
        if ($arg === null) {
          $state = 8;
        }
        elseif ($arg !== null) {
          $state = 1;
        }
        else {
          throw new \InvalidArgumentException();
        }
        break;

      case 1:
        if ($arg === null) {
          $state = 5;
        }
        elseif ($arg !== null) {
          $state = 2;
        }
        else {
          throw new \InvalidArgumentException();
        }
        break;

      case 2:
        if ($arg === true) {
          $data[$name] = $value; // $name, $value, true - overwrite saved value and return reference on it.
          return $data[$name];
        }
        elseif ($arg === false) {
          if (!array_key_exists($name, $data)) {
            $data[$name] = $value;
          }
          return $data[$name]; // $name, $value, false - save value if not exist, return reference on stored value.
        }
        else {
          throw new \InvalidArgumentException();
        }

      case 5:
        if ($arg === false) {
          if (!array_key_exists($name, $data)) {
            $data[$name] = $value; // $name, null, false, - initialize var if not exist, return reference on stored value.
          }
          return $data[$name];
        }
        elseif ($arg === true) {
          $data[$name] = $value; // $name, $value, true - overwrite saved value and return reference on it.
          return $data[$name]; // $name, null, true - overwrite saved value and return reference on it.
        }
        else {
          throw new \InvalidArgumentException();
        }
        break;

      case 8:
        if ($arg === null) {
          continue;
        }
        if ($arg === true) {
          $data = array(); // null, null, true - unset all
          break 2;
        }
        elseif ($arg === false) {
          return $data; // null, null, false - return all
        }
        else {
          throw new \InvalidArgumentException();
        }

      default:
        throw new \RuntimeException('Unknown state.');
    }
  }
  return $null;
}

Как сделать глобальные переменные своими руками?
Как сделать ветвление когда под рукой не оказалось if, зато есть while и switch?

Запостил: sectus sectus, (Updated )

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

  • дебагер со встроенным электрошоком - идельный способ улучшения кода
    Ответить
    • $null = null;
      if (is_array($name)) {
      $data = $name;
      return $null;
      }
      Плять что это?
      Видимо мысль была столь умна и глубока что в коде не смогла отобразиться:)
      Электошок тут уже не поможет...
      Ответить
  • Куда делось ВСЁ с 8723 до 8739?
    Ракоатака?
    Минусоатака?
    Ответить
  • Обезьянам в клетку бросили конечный автомат?
    Ответить
  • шDO!H F"J$I(ES$HJ)T,M(S,H,GH!H,K$Y?Q.R,I:C$V)O.Q.K)V.T HJ)G$Z.Q!M$A:T!H$L(I)V!R"W!T?R?F(R(P?K:H)T K:K A.R.H$T!K(E"KDZ(H$Y(Z$Q!C?V)IZ$D"L J)S?U(H,X$S.T,H.VQJ?T Z S P"D)I$N HH,XK$W?X.Z?DKH:K,Z"H(V?Q.W"G$W:S)Z,A N$J?T.B!P:H?T M"F:Y)O,J!L"N?Y.L,I!C?T?J(G V:I$V"F)MN?J Y$S$R A"I)YD?K$R!A$X(A C"QG.F?Z$T$N:EP H,YB?Q)F)D.J,V!T$H$W.N!Q,S,D.C$R.M:H$H?T?C:S)E)T:Y)R.X!X,Q)T.U L!B(W)NZ?T.E!U!W(R$V(K?Y$ZH)W?J)B(K"T$DB$WOA?M"O)P(F?N"C!I)FU?Q(J.B)E?S(G.N:R)A(W(S.Q,F?W!U$K,C"M"F)X O"XV:E.Q S!N?O?W(M"W:MQ)L)BN"N,H:Z"AM)B.K!P:S.E(W!R!RЛBEHCKSQBCAYXNEWJMFGACAUKFWEKTHCTDQVVIAEBKEDYBYERCETMWWTMQTZNOSZRHURBLMEEPQYZCYEIXTVISLMGTQNMCEENQANTWNUMSGLRMOOMJYWKSUWQBEQNOTYSCVJGPOSVDDPHSPTWPJHDILUPCGZLBQOHVHDEUNUCSNCAWVMRICOJIKWCVFETEMJSXJAHCOV
    Ответить

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

Я, guest, находясь в здравом уме и твердой памяти, торжественно заявляю:

    А не использовать ли нам bbcode?


    8