PluginProbe ʕ •ᴥ•ʔ
GiveWP – Donation Plugin and Fundraising Platform / 2.13.3
GiveWP – Donation Plugin and Fundraising Platform v2.13.3
4.16.2 4.16.1 4.16.0 4.15.5 4.15.4 4.15.3 4.15.2 4.15.1 4.15.0 2.3.0 2.3.1 2.3.2 2.30.0 2.31.0 2.31.1 2.32.0 2.33.0 2.33.1 2.33.2 2.33.3 2.33.4 2.33.5 2.4.0 2.4.1 2.4.2 2.4.3 2.4.4 2.4.5 2.4.6 2.4.7 2.5.0 2.5.1 2.5.10 2.5.11 2.5.12 2.5.13 2.5.2 2.5.3 2.5.4 2.5.5 2.5.6 2.5.7 2.5.8 2.5.9 2.6.0 2.6.1 2.6.2 2.6.3 2.7.0 2.7.1 2.7.2 2.7.3 2.7.4 2.7.5 2.8.0 2.8.1 2.9.0 2.9.1 2.9.2 2.9.3 2.9.4 2.9.5 2.9.6 2.9.7 3.0.0 3.0.1 3.0.2 3.0.3 3.0.4 3.1.0 3.1.1 3.1.2 3.10.0 3.11.0 3.12.0 3.12.1 3.12.2 3.12.3 3.13.0 3.14.0 3.14.1 3.14.2 3.15.0 3.15.1 3.16.0 3.16.1 3.16.2 3.16.3 3.16.4 3.16.5 3.17.0 3.17.1 3.17.2 3.18.0 3.19.0 3.19.1 3.19.2 3.19.3 3.19.4 3.2.0 3.2.1 3.2.2 3.20.0 3.21.0 3.21.1 3.22.0 3.22.1 3.22.2 3.3.0 3.3.1 3.4.0 3.4.1 3.4.2 3.5.0 3.5.1 3.6.0 3.6.1 3.6.2 3.7.0 3.8.0 3.9.0 4.0.0 4.1.0 4.1.1 4.10.0 4.10.1 4.11.0 4.12.0 4.13.0 4.13.1 4.13.2 4.14.0 4.14.1 4.14.2 4.14.3 4.14.4 4.14.5 4.14.6 4.2.0 4.2.1 4.3.0 4.3.1 4.3.2 4.4.0 4.5.0 4.6.1 4.7.0 4.7.1 4.8.0 4.8.1 4.9.0 trunk 1.9.0 2.0.0 2.0.1 2.0.2 2.0.3 2.0.4 2.0.5 2.0.6 2.0.7 2.1.0 2.1.1 2.1.2 2.1.3 2.1.4 2.1.5 2.1.6 2.1.7 2.1.8 2.10.0 2.10.1 2.10.2 2.10.3 2.10.4 2.11.0 2.11.1 2.11.2 2.11.3 2.12.0 2.12.1 2.12.2 2.12.3 2.13.0 2.13.1 2.13.2 2.13.3 2.13.4 2.14.0 2.15.0 2.16.0 2.16.1 2.17.0 2.17.1 2.17.3 2.18.0 2.18.1 2.19.1 2.19.2 2.19.3 2.19.4 2.19.5 2.19.6 2.19.7 2.19.8 2.2.0 2.2.1 2.2.2 2.2.3 2.2.4 2.2.5 2.2.6 2.20.0 2.20.1 2.20.2 2.21.0 2.21.1 2.21.2 2.21.3 2.21.4 2.22.0 2.22.1 2.22.2 2.22.3 2.23.0 2.23.1 2.23.2 2.24.0 2.24.1 2.24.2 2.25.0 2.25.1 2.25.2 2.25.3 2.26.0 2.27.0 2.27.1 2.27.2 2.27.3 2.28.0 2.29.0 2.29.1 2.29.2
give / src / PaymentGateways / Stripe / Models / AccountDetail.php
give / src / PaymentGateways / Stripe / Models Last commit date
AccountDetail.php 4 years ago
AccountDetail.php
124 lines
1 <?php
2
3 namespace Give\PaymentGateways\Stripe\Models;
4
5 use Give\PaymentGateways\Exceptions\InvalidPropertyName;
6 use Give\Helpers\ArrayDataSet;
7
8 /**
9 * Class AccountDetail
10 *
11 * @package Give\PaymentGateways\Stripe\Models
12 * @since 2.10.2
13 *
14 * @property-read string $type
15 * @property-read string $accountName
16 * @property-read string $accountSlug
17 * @property-read string $accountEmail
18 * @property-read string $accountCountry
19 * @property-read string $accountId
20 * @property-read string $liveSecretKey
21 * @property-read string $livePublishableKey
22 * @property-read string $testSecretKey
23 * @property-read string $testPublishableKey
24 */
25 class AccountDetail {
26 protected $args;
27 protected $propertiesArgs;
28 protected $requiredArgs = [
29 'type',
30 'account_name',
31 'account_slug',
32 'account_email',
33 'account_country',
34 'account_id',
35 'live_secret_key',
36 'live_publishable_key',
37 'test_secret_key',
38 'test_publishable_key',
39 ];
40
41 /**
42 * AccountDetail constructor.
43 *
44 * @param array $args
45 *
46 * @throws InvalidPropertyName
47 * @since 2.10.2
48 */
49 public function __construct( array $args ) {
50 $this->args = $args;
51 $this->propertiesArgs = ArrayDataSet::camelCaseKeys( $args );
52 $this->validate( $args );
53 }
54
55 /**
56 * @since 2.13.0
57 * @throws InvalidPropertyName
58 */
59 public static function fromArray( $array ) {
60 return new static( $array );
61 }
62
63 /**
64 * @since 2.13.0
65 *
66 * @return array
67 */
68 public function toArray() {
69 return [
70 'type' => $this->type,
71 'account_id' => $this->accountId,
72 'account_slug' => $this->accountSlug,
73 'account_name' => $this->accountName,
74 'account_country' => $this->accountCountry,
75 'account_email' => $this->accountEmail,
76 'live_secret_key' => $this->liveSecretKey,
77 'test_secret_key' => $this->testSecretKey,
78 'live_publishable_key' => $this->livePublishableKey,
79 'test_publishable_key' => $this->testPublishableKey,
80 ];
81 }
82
83 /**
84 * @since 2.10.2
85 * @param string $key
86 *
87 * @return mixed
88 * @throws InvalidPropertyName
89 */
90 public function __get( $key ) {
91 if ( ! array_key_exists( $key, $this->propertiesArgs ) ) {
92 throw new InvalidPropertyName(
93 sprintf(
94 '$1%s property does not exist in %2$s class',
95 $key,
96 __CLASS__
97 )
98 );
99 }
100
101 return $this->propertiesArgs[ $key ];
102 }
103
104 /**
105 * Validate array format.
106 *
107 * @since 2.10.2
108 * @param array $array
109 *
110 * @throws InvalidPropertyName
111 */
112 private function validate( $array ) {
113 if ( array_diff( $this->requiredArgs, array_keys( $array ) ) ) {
114 throw new InvalidPropertyName(
115 sprintf(
116 'To create a %1$s object, please provide valid: %2$s',
117 __CLASS__,
118 implode( ' , ', $this->requiredArgs )
119 )
120 );
121 }
122 }
123 }
124