Duplicate code is one of the most pungent code smells. A rule that is often used is to re-structure code once it is duplicated in three or more places.
Common duplication problems, and corresponding solutions are:
| 1 | <?php |
||
| 22 | class Give_Cache_Setting { |
||
|
|
|||
| 23 | /** |
||
| 24 | * Instance. |
||
| 25 | * |
||
| 26 | * @since 2.4.0 |
||
| 27 | * @access private |
||
| 28 | * @var Give_Cache_Setting |
||
| 29 | */ |
||
| 30 | static private $instance; |
||
| 31 | |||
| 32 | /** |
||
| 33 | * Cache key. |
||
| 34 | * |
||
| 35 | * @since 2.4.0 |
||
| 36 | * @access private |
||
| 37 | * @var string |
||
| 38 | */ |
||
| 39 | private $cache_key = 'giveAllOptions'; |
||
| 40 | |||
| 41 | |||
| 42 | /** |
||
| 43 | * Cache group. |
||
| 44 | * |
||
| 45 | * @since 2.4.0 |
||
| 46 | * @access private |
||
| 47 | * @var string |
||
| 48 | */ |
||
| 49 | private $cache_group = 'give-options'; |
||
| 50 | |||
| 51 | /** |
||
| 52 | * Array of cached settings |
||
| 53 | * |
||
| 54 | * @since 2.4.0 |
||
| 55 | * @access private |
||
| 56 | * @var array |
||
| 57 | */ |
||
| 58 | private $settings = array( |
||
| 59 | 'give_settings' => array(), |
||
| 60 | 'give_version' => '', |
||
| 61 | 'give_completed_upgrades' => array(), |
||
| 62 | 'give_doing_upgrade' => array(), |
||
| 63 | 'give_paused_batches' => array(), |
||
| 64 | 'give_install_pages_created' => '', |
||
| 65 | 'give_show_db_upgrade_complete_notice' => '', |
||
| 66 | 'give_addon_last_activated' => '', |
||
| 67 | 'currencies' => array(), |
||
| 68 | 'gateways' => array(), |
||
| 69 | ); |
||
| 70 | |||
| 71 | /** |
||
| 72 | * Array of cached setting db option names |
||
| 73 | * |
||
| 74 | * @since 2.4.0 |
||
| 75 | * @access private |
||
| 76 | * @var array |
||
| 77 | */ |
||
| 78 | private $db_option_ids = array( |
||
| 79 | 'give_settings', |
||
| 80 | 'give_version', |
||
| 81 | 'give_completed_upgrades', |
||
| 82 | 'give_doing_upgrade', |
||
| 83 | 'give_install_pages_created', |
||
| 84 | 'give_show_db_upgrade_complete_notice', |
||
| 85 | 'give_addon_last_activated', |
||
| 86 | 'give_paused_batches', |
||
| 87 | ); |
||
| 88 | |||
| 89 | /** |
||
| 90 | * Array of cached setting option names |
||
| 91 | * |
||
| 92 | * @since 2.4.0 |
||
| 93 | * @access private |
||
| 94 | * @var array |
||
| 95 | */ |
||
| 96 | static private $all_option_ids; |
||
| 97 | |||
| 98 | /** |
||
| 99 | * Singleton pattern. |
||
| 100 | * |
||
| 101 | * @since 2.4.0 |
||
| 102 | * @access private |
||
| 103 | */ |
||
| 104 | private function __construct() { |
||
| 106 | |||
| 107 | |||
| 108 | /** |
||
| 109 | * Get instance. |
||
| 110 | * |
||
| 111 | * @since 2.4.0 |
||
| 112 | * @access public |
||
| 113 | * @return Give_Cache_Setting |
||
| 114 | */ |
||
| 115 | View Code Duplication | public static function get_instance() { |
|
| 124 | |||
| 125 | /** |
||
| 126 | * Setup |
||
| 127 | * |
||
| 128 | * @since 2.4.0 |
||
| 129 | * @access private |
||
| 130 | */ |
||
| 131 | private function setup() { |
||
| 143 | |||
| 144 | /** |
||
| 145 | * Load plugin settings |
||
| 146 | * |
||
| 147 | * @since 2.4.0 |
||
| 148 | * @access private |
||
| 149 | */ |
||
| 150 | private function load_plugin_settings() { |
||
| 189 | |||
| 190 | /** |
||
| 191 | * Reload option when add, update or delete |
||
| 192 | * |
||
| 193 | * Note: only for internal logic |
||
| 194 | * |
||
| 195 | * @since 2.4.0 |
||
| 196 | * |
||
| 197 | * @param $option_name |
||
| 198 | */ |
||
| 199 | public function reload_plugin_settings( $option_name ) { |
||
| 208 | |||
| 209 | /** |
||
| 210 | * Setup currencies list |
||
| 211 | * |
||
| 212 | * @since 2.4.0 |
||
| 213 | */ |
||
| 214 | public function setup_currencies_list() { |
||
| 226 | |||
| 227 | |||
| 228 | /** |
||
| 229 | * Setup gateway list |
||
| 230 | * |
||
| 231 | * @since 2.4.0 |
||
| 232 | */ |
||
| 233 | public function setup_gateways_list() { |
||
| 259 | |||
| 260 | |||
| 261 | /** |
||
| 262 | * Get option |
||
| 263 | * |
||
| 264 | * @since 2.4.0 |
||
| 265 | * @access public |
||
| 266 | * |
||
| 267 | * @param $option_name |
||
| 268 | * @param bool $default |
||
| 269 | * |
||
| 270 | * @return mixed |
||
| 271 | */ |
||
| 272 | public static function get_option( $option_name, $default = false ) { |
||
| 283 | |||
| 284 | /** |
||
| 285 | * Get plugin settings |
||
| 286 | * |
||
| 287 | * @since 2.4.0 |
||
| 288 | * @access public |
||
| 289 | */ |
||
| 290 | public static function get_settings() { |
||
| 297 | } |
||
| 298 | |||
| 300 |