commerce-8.x-2.8/modules/payment/src/CreditCardType.php
modules/payment/src/CreditCardType.php
<?php
namespace Drupal\commerce_payment;
/**
* Represents a credit card type.
*/
final class CreditCardType {
/**
* The credit card type ID.
*
* @var string
*/
protected $id;
/**
* The credit card type label.
*
* @var string
*/
protected $label;
/**
* The credit card type number prefixes.
*
* @var array
*/
protected $numberPrefixes;
/**
* The credit card type number lengths.
*
* @var array
*/
protected $numberLengths = [16];
/**
* The credit card type security code length.
*
* @var string
*/
protected $securityCodeLength = 3;
/**
* Whether the credit cart type uses Luhn validation.
*
* @var string
*/
protected $usesLuhn = TRUE;
/**
* Constructs a new CreditCardType instance.
*
* @param array $definition
* The definition.
*/
public function __construct(array $definition) {
foreach (['id', 'label', 'number_prefixes'] as $required_property) {
if (empty($definition[$required_property])) {
throw new \InvalidArgumentException(sprintf('Missing required property %s.', $required_property));
}
}
$this->id = $definition['id'];
$this->label = $definition['label'];
$this->numberPrefixes = $definition['number_prefixes'];
if (isset($definition['number_lengths'])) {
$this->numberLengths = $definition['number_lengths'];
}
if (isset($definition['security_code_length'])) {
$this->securityCodeLength = $definition['security_code_length'];
}
if (isset($definition['uses_luhn'])) {
$this->usesLuhn = $definition['uses_luhn'];
}
}
/**
* Gets the credit card type ID.
*
* @return string
* The credit card type ID.
*/
public function getId() {
return $this->id;
}
/**
* Gets the credit card type label.
*
* @return string
* The credit card type label.
*/
public function getLabel() {
return $this->label;
}
/**
* Gets the credit card type number prefixes.
*
* @return array
* The credit card type number prefixes.
*/
public function getNumberPrefixes() {
return $this->numberPrefixes;
}
/**
* Gets the credit card type number lengths.
*
* @return array
* The credit card type number lengths.
*/
public function getNumberLengths() {
return $this->numberLengths;
}
/**
* Gets the credit card type security code length.
*
* @return string
* The credit card type security code length.
*/
public function getSecurityCodeLength() {
return $this->securityCodeLength;
}
/**
* Gets whether the credit card type uses Luhn validation.
*
* @return bool
* TRUE if the credit card type uses Luhn validation, FALSE otherwise.
*/
public function usesLuhn() {
return $this->usesLuhn;
}
}
