PluginProbe ʕ •ᴥ•ʔ
GiveWP – Donation Plugin and Fundraising Platform / 2.17.3
GiveWP – Donation Plugin and Fundraising Platform v2.17.3
4.16.4 4.16.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
133 lines
1 <?php
2
3 namespace Give\PaymentGateways\Stripe\Models;
4
5 use Give\Helpers\ArrayDataSet;
6 use Give\PaymentGateways\Exceptions\InvalidPropertyName;
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 {
27 protected $args;
28 protected $propertiesArgs;
29 protected $requiredArgs = [
30 'type',
31 'account_name',
32 'account_slug',
33 'account_email',
34 'account_country',
35 'account_id',
36 'live_secret_key',
37 'live_publishable_key',
38 'test_secret_key',
39 'test_publishable_key',
40 ];
41
42 /**
43 * AccountDetail constructor.
44 *
45 * @since 2.10.2
46 *
47 * @param array $args
48 *
49 * @throws InvalidPropertyName
50 */
51 public function __construct(array $args)
52 {
53 $this->args = $args;
54 $this->propertiesArgs = ArrayDataSet::camelCaseKeys($args);
55 $this->validate($args);
56 }
57
58 /**
59 * @since 2.13.0
60 * @throws InvalidPropertyName
61 */
62 public static function fromArray($array)
63 {
64 return new static($array);
65 }
66
67 /**
68 * @since 2.13.0
69 *
70 * @return array
71 */
72 public function toArray()
73 {
74 return [
75 'type' => $this->type,
76 'account_id' => $this->accountId,
77 'account_slug' => $this->accountSlug,
78 'account_name' => $this->accountName,
79 'account_country' => $this->accountCountry,
80 'account_email' => $this->accountEmail,
81 'live_secret_key' => $this->liveSecretKey,
82 'test_secret_key' => $this->testSecretKey,
83 'live_publishable_key' => $this->livePublishableKey,
84 'test_publishable_key' => $this->testPublishableKey,
85 ];
86 }
87
88 /**
89 * @since 2.10.2
90 *
91 * @param string $key
92 *
93 * @return mixed
94 * @throws InvalidPropertyName
95 */
96 public function __get($key)
97 {
98 if ( ! array_key_exists($key, $this->propertiesArgs)) {
99 throw new InvalidPropertyName(
100 sprintf(
101 '$1%s property does not exist in %2$s class',
102 $key,
103 __CLASS__
104 )
105 );
106 }
107
108 return $this->propertiesArgs[$key];
109 }
110
111 /**
112 * Validate array format.
113 *
114 * @since 2.10.2
115 *
116 * @param array $array
117 *
118 * @throws InvalidPropertyName
119 */
120 private function validate($array)
121 {
122 if (array_diff($this->requiredArgs, array_keys($array))) {
123 throw new InvalidPropertyName(
124 sprintf(
125 'To create a %1$s object, please provide valid: %2$s',
126 __CLASS__,
127 implode(' , ', $this->requiredArgs)
128 )
129 );
130 }
131 }
132 }
133