Separator.php 5.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180
  1. <?php
  2. namespace ZN\Helpers;
  3. class __USE_STATIC_ACCESS__Separator implements SeparatorInterface
  4. {
  5. //----------------------------------------------------------------------------------------------------
  6. //
  7. // Yazar : Ozan UYKUN <ozanbote@windowslive.com> | <ozanbote@gmail.com>
  8. // Site : www.zntr.net
  9. // Lisans : The MIT License
  10. // Telif Hakkı: Copyright (c) 2012-2016, zntr.net
  11. //
  12. //----------------------------------------------------------------------------------------------------
  13. /* Key Değişkeni
  14. *
  15. * Anahtar ile değer asındaki ayraç
  16. * Varsayılan:+-?||?-+
  17. */
  18. private $key = "+-?||?-+" ;
  19. /* Seperator Değişkeni
  20. *
  21. * Anahtar ve değerler asındaki ayraç
  22. * Varsayılan:|?-++-?|
  23. */
  24. private $separator = "|?-++-?|";
  25. use \CallUndefinedMethodTrait;
  26. //----------------------------------------------------------------------------------------------------
  27. // Error Control
  28. //----------------------------------------------------------------------------------------------------
  29. //
  30. // $error
  31. // $success
  32. //
  33. // error()
  34. // success()
  35. //
  36. //----------------------------------------------------------------------------------------------------
  37. use \ErrorControlTrait;
  38. //----------------------------------------------------------------------------------------------------
  39. // Protected Security
  40. //----------------------------------------------------------------------------------------------------
  41. //
  42. // @param string $data
  43. //
  44. //----------------------------------------------------------------------------------------------------
  45. protected function _security($data = '')
  46. {
  47. return str_replace([$this->key, $this->separator], '', $data);
  48. }
  49. //----------------------------------------------------------------------------------------------------
  50. // Encode
  51. //----------------------------------------------------------------------------------------------------
  52. //
  53. // @param array $data
  54. // @param string $key
  55. // @param string $separator
  56. //
  57. //----------------------------------------------------------------------------------------------------
  58. public function encode($data = [], $key = '', $separator = '')
  59. {
  60. // Parametre kontrolleri yapılıyor. -------------------------------------------
  61. if( ! is_array($data) )
  62. {
  63. return \Errors::set('Error', 'arrayParameter', 'data');
  64. }
  65. if( ! is_string($key) )
  66. {
  67. $key = '';
  68. }
  69. if( ! is_string($separator) )
  70. {
  71. $separator = '';
  72. }
  73. $word = '';
  74. // @key parametresi boş ise ön tanımlı ayracı kullan.
  75. if( empty($key) )
  76. {
  77. $key = $this->key;
  78. }
  79. // @seperator parametresi boş ise ön tanımlı ayracı kullan.
  80. if( empty($separator) )
  81. {
  82. $separator = $this->separator;
  83. }
  84. // -----------------------------------------------------------------------------
  85. // Özel veri tipine çevirme işlemini başlat.
  86. foreach( $data as $k => $v )
  87. {
  88. $word .= $this->_security($k).$key.$this->_security($v).$separator;
  89. }
  90. return mb_substr($word, 0, -(mb_strlen($separator)));
  91. }
  92. //----------------------------------------------------------------------------------------------------
  93. // Decode
  94. //----------------------------------------------------------------------------------------------------
  95. //
  96. // @param string $word
  97. // @param string $key
  98. // @param string $separator
  99. //
  100. //----------------------------------------------------------------------------------------------------
  101. public function decode($word = '', $key = '', $separator = '')
  102. {
  103. // Parametre kontrolleri yapılıyor. -------------------------------------------
  104. if( ! is_string($word) )
  105. {
  106. return \Errors::set('Error', 'stringParameter', 'word');
  107. }
  108. if( empty($word) )
  109. {
  110. return \Errors::set('Error', 'emptyParameter', 'word');
  111. }
  112. if( ! is_string($key) )
  113. {
  114. $key = '';
  115. }
  116. if( ! is_string($separator) )
  117. {
  118. $separator = '';
  119. }
  120. if( empty($key) )
  121. {
  122. $key = $this->key;
  123. }
  124. if( empty($separator) )
  125. {
  126. $separator = $this->separator;
  127. }
  128. // -----------------------------------------------------------------------------
  129. $keyval = explode($separator, $word);
  130. $splits = [];
  131. $object = [];
  132. if( is_array($keyval) ) foreach( $keyval as $v )
  133. {
  134. $splits = explode($key, $v);
  135. if( isset($splits[1]) )
  136. {
  137. $object[$splits[0]] = $splits[1];
  138. }
  139. }
  140. return (object)$object;
  141. }
  142. //----------------------------------------------------------------------------------------------------
  143. // Decode Array
  144. //----------------------------------------------------------------------------------------------------
  145. //
  146. // @param string $word
  147. // @param string $key
  148. // @param string $separator
  149. //
  150. //----------------------------------------------------------------------------------------------------
  151. public function decodeArray($word = '', $key = '', $separator = '')
  152. {
  153. return (array)$this->decode($word, $key, $separator);
  154. }
  155. }