mirror of
https://github.com/woocommerce/woocommerce-paypal-payments.git
synced 2025-09-08 21:52:55 +08:00
Add SingletonDecorator
Refactor PurchaseUnitSanitizer service registration to SingletonDecorator
This commit is contained in:
parent
2b497182d3
commit
ecb884c86c
3 changed files with 65 additions and 22 deletions
|
@ -20,6 +20,7 @@ use WooCommerce\PayPalCommerce\ApiClient\Factory\ShippingOptionFactory;
|
|||
use WooCommerce\PayPalCommerce\ApiClient\Helper\OrderTransient;
|
||||
use WooCommerce\PayPalCommerce\ApiClient\Helper\PurchaseUnitSanitizer;
|
||||
use WooCommerce\PayPalCommerce\Session\SessionHandler;
|
||||
use WooCommerce\PayPalCommerce\Vendor\Pattern\SingletonDecorator;
|
||||
use WooCommerce\PayPalCommerce\Vendor\Psr\Container\ContainerInterface;
|
||||
use WooCommerce\PayPalCommerce\ApiClient\Authentication\Bearer;
|
||||
use WooCommerce\PayPalCommerce\ApiClient\Authentication\PayPalBearer;
|
||||
|
@ -823,17 +824,12 @@ return array(
|
|||
$purchase_unit_sanitizer = $container->get( 'api.helper.purchase-unit-sanitizer' );
|
||||
return new OrderTransient( $cache, $purchase_unit_sanitizer );
|
||||
},
|
||||
'api.helper.purchase-unit-sanitizer' => static function( ContainerInterface $container ): PurchaseUnitSanitizer {
|
||||
$instance = PurchaseUnitSanitizer::get_instance();
|
||||
if ( $instance ) {
|
||||
return $instance;
|
||||
}
|
||||
|
||||
'api.helper.purchase-unit-sanitizer' => SingletonDecorator::make(static function( ContainerInterface $container ): PurchaseUnitSanitizer {
|
||||
$settings = $container->get( 'wcgateway.settings' );
|
||||
assert( $settings instanceof Settings );
|
||||
|
||||
$behavior = $settings->has( 'subtotal_mismatch_behavior' ) ? $settings->get( 'subtotal_mismatch_behavior' ) : null;
|
||||
$line_name = $settings->has( 'subtotal_mismatch_line_name' ) ? $settings->get( 'subtotal_mismatch_line_name' ) : null;
|
||||
return PurchaseUnitSanitizer::singleton( $behavior, $line_name );
|
||||
},
|
||||
return new PurchaseUnitSanitizer( $behavior, $line_name );
|
||||
}),
|
||||
);
|
||||
|
|
|
@ -19,14 +19,11 @@ namespace WooCommerce\PayPalCommerce\ApiClient\Helper;
|
|||
|
||||
use WooCommerce\PayPalCommerce\ApiClient\Entity\Item;
|
||||
use WooCommerce\PayPalCommerce\ApiClient\Entity\Money;
|
||||
use WooCommerce\PayPalCommerce\Vendor\Pattern\SingletonTrait;
|
||||
|
||||
/**
|
||||
* Class PurchaseUnitSanitizer
|
||||
*/
|
||||
class PurchaseUnitSanitizer {
|
||||
use SingletonTrait;
|
||||
|
||||
const MODE_DITCH = 'ditch';
|
||||
const MODE_EXTRA_LINE = 'extra_line';
|
||||
const VALID_MODES = array(
|
||||
|
@ -91,17 +88,6 @@ class PurchaseUnitSanitizer {
|
|||
$this->extra_line_name = $extra_line_name;
|
||||
}
|
||||
|
||||
/**
|
||||
* PurchaseUnitSanitizer singleton.
|
||||
*
|
||||
* @param string|null $mode The mismatch handling mode, ditch or extra_line.
|
||||
* @param string|null $extra_line_name The name of the extra line.
|
||||
* @return self
|
||||
*/
|
||||
public static function singleton( string $mode = null, string $extra_line_name = null ): self {
|
||||
return self::set_instance( new self( $mode, $extra_line_name ) );
|
||||
}
|
||||
|
||||
/**
|
||||
* Indicates if mode is ditch.
|
||||
*
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue