<?php
namespace WCML\Multicurrency\Shipping;
class ShippingModeProvider {
private static function getClasses() {
$collection = wpml_collect( [
'flat_rate' => 'WCML\Multicurrency\Shipping\FlatRateShipping',
'free_shipping' => 'WCML\Multicurrency\Shipping\FreeShipping',
'local_pickup' => 'WCML\Multicurrency\Shipping\LocalPickup',
] );
return $collection;
}
public static function getAll() {
return self::getClasses()->map( function( $className ) {
return self::make( $className );
} );
}
/**
* @param string $shippingMode
* @return ShippingMode
*/
public static function get( $shippingMode ) {
return self::make(
self::getClasses()->get( $shippingMode, 'WCML\Multicurrency\Shipping\UnsupportedShipping' )
);
}
/**
* @param string $className
*
* @return ShippingMode
*/
private static function make( $className ) {
return \WPML\Container\make( $className );
}
}