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 |
||
| 33 | class WC_Stripe { |
||
| 34 | |||
| 35 | /** |
||
| 36 | * @var Singleton The reference the *Singleton* instance of this class |
||
| 37 | */ |
||
| 38 | private static $instance; |
||
| 39 | |||
| 40 | /** |
||
| 41 | * @var Reference to logging class. |
||
| 42 | */ |
||
| 43 | private static $log; |
||
|
|
|||
| 44 | |||
| 45 | /** |
||
| 46 | * Returns the *Singleton* instance of this class. |
||
| 47 | * |
||
| 48 | * @return Singleton The *Singleton* instance. |
||
| 49 | */ |
||
| 50 | public static function get_instance() { |
||
| 56 | |||
| 57 | /** |
||
| 58 | * Private clone method to prevent cloning of the instance of the |
||
| 59 | * *Singleton* instance. |
||
| 60 | * |
||
| 61 | * @return void |
||
| 62 | */ |
||
| 63 | private function __clone() {} |
||
| 64 | |||
| 65 | /** |
||
| 66 | * Private unserialize method to prevent unserializing of the *Singleton* |
||
| 67 | * instance. |
||
| 68 | * |
||
| 69 | * @return void |
||
| 70 | */ |
||
| 71 | private function __wakeup() {} |
||
| 72 | |||
| 73 | /** |
||
| 74 | * Protected constructor to prevent creating a new instance of the |
||
| 75 | * *Singleton* via the `new` operator from outside of this class. |
||
| 76 | */ |
||
| 77 | private function __construct() { |
||
| 81 | |||
| 82 | /** |
||
| 83 | * Init the plugin after plugins_loaded so environment variables are set. |
||
| 84 | * |
||
| 85 | * @since 1.0.0 |
||
| 86 | * @version 4.0.0 |
||
| 87 | */ |
||
| 88 | public function init() { |
||
| 89 | require_once( dirname( __FILE__ ) . '/includes/class-wc-stripe-exception.php' ); |
||
| 90 | require_once( dirname( __FILE__ ) . '/includes/class-wc-stripe-logger.php' ); |
||
| 91 | require_once( dirname( __FILE__ ) . '/includes/class-wc-stripe-helper.php' ); |
||
| 92 | include_once( dirname( __FILE__ ) . '/includes/class-wc-stripe-api.php' ); |
||
| 93 | |||
| 94 | // Don't hook anything else in the plugin if we're in an incompatible environment. |
||
| 95 | if ( $this->get_environment_warning() ) { |
||
| 96 | return; |
||
| 97 | } |
||
| 98 | |||
| 99 | load_plugin_textdomain( 'woocommerce-gateway-stripe', false, plugin_basename( dirname( __FILE__ ) ) . '/languages' ); |
||
| 100 | |||
| 101 | require_once( dirname( __FILE__ ) . '/includes/abstracts/abstract-wc-stripe-payment-gateway.php' ); |
||
| 102 | require_once( dirname( __FILE__ ) . '/includes/class-wc-stripe-webhook-handler.php' ); |
||
| 103 | require_once( dirname( __FILE__ ) . '/includes/class-wc-stripe-sepa-payment-token.php' ); |
||
| 104 | require_once( dirname( __FILE__ ) . '/includes/class-wc-stripe-apple-pay-registration.php' ); |
||
| 105 | require_once( dirname( __FILE__ ) . '/includes/compat/class-wc-stripe-pre-orders-compat.php' ); |
||
| 106 | require_once( dirname( __FILE__ ) . '/includes/class-wc-gateway-stripe.php' ); |
||
| 107 | require_once( dirname( __FILE__ ) . '/includes/payment-methods/class-wc-gateway-stripe-bancontact.php' ); |
||
| 108 | require_once( dirname( __FILE__ ) . '/includes/payment-methods/class-wc-gateway-stripe-sofort.php' ); |
||
| 109 | require_once( dirname( __FILE__ ) . '/includes/payment-methods/class-wc-gateway-stripe-giropay.php' ); |
||
| 110 | require_once( dirname( __FILE__ ) . '/includes/payment-methods/class-wc-gateway-stripe-eps.php' ); |
||
| 111 | require_once( dirname( __FILE__ ) . '/includes/payment-methods/class-wc-gateway-stripe-ideal.php' ); |
||
| 112 | require_once( dirname( __FILE__ ) . '/includes/payment-methods/class-wc-gateway-stripe-p24.php' ); |
||
| 113 | require_once( dirname( __FILE__ ) . '/includes/payment-methods/class-wc-gateway-stripe-alipay.php' ); |
||
| 114 | require_once( dirname( __FILE__ ) . '/includes/payment-methods/class-wc-gateway-stripe-sepa.php' ); |
||
| 115 | require_once( dirname( __FILE__ ) . '/includes/payment-methods/class-wc-gateway-stripe-bitcoin.php' ); |
||
| 116 | require_once( dirname( __FILE__ ) . '/includes/payment-methods/class-wc-gateway-stripe-multibanco.php' ); |
||
| 117 | require_once( dirname( __FILE__ ) . '/includes/payment-methods/class-wc-stripe-payment-request.php' ); |
||
| 118 | require_once( dirname( __FILE__ ) . '/includes/compat/class-wc-stripe-subs-compat.php' ); |
||
| 119 | require_once( dirname( __FILE__ ) . '/includes/compat/class-wc-stripe-sepa-subs-compat.php' ); |
||
| 120 | require_once( dirname( __FILE__ ) . '/includes/class-wc-stripe-order-handler.php' ); |
||
| 121 | require_once( dirname( __FILE__ ) . '/includes/class-wc-stripe-payment-tokens.php' ); |
||
| 122 | require_once( dirname( __FILE__ ) . '/includes/class-wc-stripe-customer.php' ); |
||
| 123 | |||
| 124 | if ( is_admin() ) { |
||
| 125 | require_once( dirname( __FILE__ ) . '/includes/admin/class-wc-stripe-admin-notices.php' ); |
||
| 126 | } |
||
| 127 | |||
| 128 | // REMOVE IN THE FUTURE. |
||
| 129 | require_once( dirname( __FILE__ ) . '/includes/deprecated/class-wc-stripe-apple-pay.php' ); |
||
| 130 | |||
| 131 | add_filter( 'woocommerce_payment_gateways', array( $this, 'add_gateways' ) ); |
||
| 132 | add_filter( 'plugin_action_links_' . plugin_basename( __FILE__ ), array( $this, 'plugin_action_links' ) ); |
||
| 133 | add_filter( 'woocommerce_get_sections_checkout', array( $this, 'filter_gateway_order_admin' ) ); |
||
| 134 | } |
||
| 135 | |||
| 136 | /** |
||
| 137 | * Checks the environment for compatibility problems. |
||
| 138 | * Returns a string with the first incompatibility |
||
| 139 | * found or false if the environment has no problems. |
||
| 140 | * |
||
| 141 | * @since 1.0.0 |
||
| 142 | * @version 4.0.0 |
||
| 143 | */ |
||
| 144 | public function get_environment_warning() { |
||
| 169 | |||
| 170 | /** |
||
| 171 | * Updates the plugin version in db |
||
| 172 | * |
||
| 173 | * @since 3.1.0 |
||
| 174 | * @version 4.0.0 |
||
| 175 | */ |
||
| 176 | public function update_plugin_version() { |
||
| 180 | |||
| 181 | /** |
||
| 182 | * Handles upgrade routines. |
||
| 183 | * |
||
| 184 | * @since 3.1.0 |
||
| 185 | * @version 3.1.0 |
||
| 186 | */ |
||
| 187 | public function install() { |
||
| 202 | |||
| 203 | /** |
||
| 204 | * Adds plugin action links. |
||
| 205 | * |
||
| 206 | * @since 1.0.0 |
||
| 207 | * @version 4.0.0 |
||
| 208 | */ |
||
| 209 | public function plugin_action_links( $links ) { |
||
| 217 | |||
| 218 | /** |
||
| 219 | * Add the gateways to WooCommerce. |
||
| 220 | * |
||
| 221 | * @since 1.0.0 |
||
| 222 | * @version 4.0.0 |
||
| 223 | */ |
||
| 224 | public function add_gateways( $methods ) { |
||
| 245 | |||
| 246 | /** |
||
| 247 | * Modifies the order of the gateways displayed in admin. |
||
| 248 | * |
||
| 249 | * @since 4.0.0 |
||
| 250 | * @version 4.0.0 |
||
| 251 | */ |
||
| 252 | public function filter_gateway_order_admin( $sections ) { |
||
| 279 | } |
||
| 280 | |||
| 284 |
This check marks private properties in classes that are never used. Those properties can be removed.