Completed
Push — master ( cc8041...cf44b9 )
by James
17:47
created
src/Core/Container.php 2 patches
Indentation   +318 added lines, -318 removed lines patch added patch discarded remove patch
@@ -13,322 +13,322 @@
 block discarded – undo
13 13
  * @subpackage Core
14 14
  */
15 15
 class Container implements ContainerContract {
16
-	/**
17
-	 * ServiceProvider names to register with the container.
18
-	 *
19
-	 * Can be overwritten to include predefined providers.
20
-	 *
21
-	 * @var string[]
22
-	 */
23
-	protected $providers = array();
24
-
25
-	/**
26
-	 * Registered definitions.
27
-	 *
28
-	 * @var mixed[]
29
-	 */
30
-	private $definitions = array();
31
-
32
-	/**
33
-	 * Aliases to share between fetches.
34
-	 *
35
-	 * @var <string, true>[]
36
-	 */
37
-	private $shared = array();
38
-
39
-	/**
40
-	 * Aliases of all the registered services.
41
-	 *
42
-	 * @var <string, true>[]
43
-	 */
44
-	private $aliases = array();
45
-
46
-	/**
47
-	 * Array of classes registered on the container.
48
-	 *
49
-	 * @var <string, true>[]
50
-	 */
51
-	private $classes = array();
52
-
53
-	/**
54
-	 * Current position in the loop.
55
-	 *
56
-	 * @var int
57
-	 */
58
-	private $position;
59
-
60
-	/**
61
-	 * 0-indexed array of aliases for looping.
62
-	 *
63
-	 * @var string[]
64
-	 */
65
-	private $keys = array();
66
-
67
-	/**
68
-	 * Create a new container with the given providers.
69
-	 *
70
-	 * Providers can be instances or the class of the provider as a string.
71
-	 *
72
-	 * @param ServiceProvider[]|string[] $providers
73
-	 */
74
-	public function __construct( array $providers = array() ) {
75
-		// array_unique ensures we only register each provider once.
76
-		$providers = array_unique( array_merge( $this->providers, $providers ) );
77
-
78
-		foreach ( $providers as $provider ) {
79
-			if ( is_string( $provider ) && class_exists( $provider ) ) {
80
-				$provider = new $provider;
81
-			}
82
-
83
-			if ( $provider instanceof ServiceProvider ) {
84
-				$this->register( $provider );
85
-			}
86
-		}
87
-	}
88
-
89
-
90
-	/**
91
-	 * {@inheritdoc}
92
-	 *
93
-	 * @param string|array $alias
94
-	 * @param mixed        $definition
95
-	 *
96
-	 * @throws DefinedAliasException
97
-	 *
98
-	 * @return $this
99
-	 */
100
-	public function define( $alias, $definition ) {
101
-		if ( is_array( $alias ) ) {
102
-			$class = current( $alias );
103
-			$alias = key( $alias );
104
-		}
105
-
106
-		if ( isset( $this->aliases[ $alias ] ) ) {
107
-			throw new DefinedAliasException( $alias );
108
-		}
109
-
110
-		$this->aliases[ $alias ]     = true;
111
-		$this->definitions[ $alias ] = $definition;
112
-
113
-		// Closures are treated as factories unless
114
-		// defined via Container::share.
115
-		if ( ! $definition instanceof \Closure ) {
116
-			$this->shared[ $alias ] = true;
117
-		}
118
-
119
-		if ( isset( $class ) ) {
120
-			$this->classes[ $class ] = $alias;
121
-		}
122
-
123
-		return $this;
124
-	}
125
-
126
-	/**
127
-	 * {@inheritdoc}
128
-	 *
129
-	 * @param string|array $alias
130
-	 * @param mixed        $definition
131
-	 *
132
-	 * @throws DefinedAliasException
133
-	 *
134
-	 * @return $this
135
-	 */
136
-	public function share( $alias, $definition ) {
137
-		$this->define( $alias, $definition );
138
-
139
-		if ( is_array( $alias ) ) {
140
-			$alias = key( $alias );
141
-		}
142
-
143
-		$this->shared[ $alias ] = true;
144
-
145
-		return $this;
146
-	}
147
-
148
-	/**
149
-	 * {@inheritdoc}
150
-	 *
151
-	 * @param string $alias
152
-	 *
153
-	 * @throws UndefinedAliasException
154
-	 *
155
-	 * @return mixed
156
-	 */
157
-	public function fetch( $alias ) {
158
-		if ( isset( $this->classes[ $alias ] ) ) {
159
-			// If the alias is a class name,
160
-			// then retrieve its linked alias.
161
-			// This is only registered when
162
-			// registering using an array.
163
-			$alias = $this->classes[ $alias ];
164
-		}
165
-
166
-		if ( ! isset( $this->aliases[ $alias ] ) ) {
167
-			throw new UndefinedAliasException( $alias );
168
-		}
169
-
170
-		$value = $this->definitions[ $alias ];
171
-
172
-		// If the shared value is a closure,
173
-		// execute it and assign the result
174
-		// in place of the closure.
175
-		if ( $value instanceof \Closure ) {
176
-			$factory = $value;
177
-			$value   = $factory( $this );
178
-		}
179
-
180
-		// If the value is shared, save the shared value.
181
-		if ( isset( $this->shared[ $alias ] ) ) {
182
-			$this->definitions[ $alias ] = $value;
183
-		}
184
-
185
-		// Return the fetched value.
186
-		return $value;
187
-	}
188
-
189
-	/**
190
-	 * {@inheritdoc}
191
-	 *
192
-	 * @param  string $alias
193
-	 *
194
-	 * @return bool
195
-	 */
196
-	public function has( $alias ) {
197
-		return isset( $this->aliases[ $alias ] );
198
-	}
199
-
200
-	/**
201
-	 * {@inheritDoc}
202
-	 *
203
-	 * @param string $alias
204
-	 *
205
-	 * @return $this
206
-	 */
207
-	public function remove( $alias ) {
208
-		if ( isset( $this->aliases[ $alias ] ) ) {
209
-			/**
210
-			 * If there's no reference in the aliases array,
211
-			 * the service won't be found on fetching and
212
-			 * can be overwritten on setting.
213
-			 *
214
-			 * Pros: Quick setting/unsetting, faster
215
-			 * performance on those operations when doing
216
-			 * a lot of these.
217
-			 *
218
-			 * Cons: Objects and values set in the container
219
-			 * can't get garbage collected.
220
-			 *
221
-			 * If this is a problem, this may need to be revisited.
222
-			 */
223
-			unset( $this->aliases[ $alias ] );
224
-		}
225
-
226
-		return $this;
227
-	}
228
-
229
-	/**
230
-	 * {@inheritDoc}
231
-	 *
232
-	 * @param ServiceProvider $provider
233
-	 *
234
-	 * @return $this
235
-	 */
236
-	public function register( ServiceProvider $provider ) {
237
-		// @todo make sure provider is only registered once
238
-		$provider->register( $this );
239
-
240
-		return $this;
241
-	}
242
-
243
-	/**
244
-	 * Set a value into the container.
245
-	 *
246
-	 * @param  string $id
247
-	 * @param  mixed  $value
248
-	 *
249
-	 * @see    define
250
-	 */
251
-	public function offsetSet( $id, $value ) {
252
-		$this->define( $id, $value );
253
-	}
254
-
255
-	/**
256
-	 * Get an value from the container.
257
-	 *
258
-	 * @param  string $id
259
-	 *
260
-	 * @return object
261
-	 * @throws UndefinedAliasException
262
-	 *
263
-	 * @see    fetch
264
-	 */
265
-	public function offsetGet( $id ) {
266
-		return $this->fetch( $id );
267
-	}
268
-
269
-	/**
270
-	 * Checks if a key is set on the container.
271
-	 *
272
-	 * @param  string $id
273
-	 *
274
-	 * @return bool
275
-	 *
276
-	 * @see    has
277
-	 */
278
-	public function offsetExists( $id ) {
279
-		return $this->has( $id );
280
-	}
281
-
282
-	/**
283
-	 * Remove a key from the container.
284
-	 *
285
-	 * @param string $id
286
-	 *
287
-	 * @see   remove
288
-	 */
289
-	public function offsetUnset( $id ) {
290
-		$this->remove( $id );
291
-	}
292
-
293
-	/**
294
-	 * Sets the object properties to prepare for the loop.
295
-	 */
296
-	public function rewind() {
297
-		$this->position = 0;
298
-		$this->keys     = array_keys( $this->aliases );
299
-	}
300
-
301
-	/**
302
-	 * Retrieves the service object for the current step in the loop.
303
-	 *
304
-	 * @return object
305
-	 */
306
-	public function current() {
307
-		return $this->fetch( $this->keys[ $this->position ] );
308
-	}
309
-
310
-	/**
311
-	 * Retrieves the key for the current step in the loop.
312
-	 *
313
-	 * @return string
314
-	 */
315
-	public function key() {
316
-		return $this->keys[ $this->position ];
317
-	}
318
-
319
-	/**
320
-	 * Increments to the next step in the loop.
321
-	 */
322
-	public function next() {
323
-		$this->position ++;
324
-	}
325
-
326
-	/**
327
-	 * Checks if the next step in the loop in valid.
328
-	 *
329
-	 * @return bool
330
-	 */
331
-	public function valid() {
332
-		return isset( $this->keys[ $this->position ] );
333
-	}
16
+    /**
17
+     * ServiceProvider names to register with the container.
18
+     *
19
+     * Can be overwritten to include predefined providers.
20
+     *
21
+     * @var string[]
22
+     */
23
+    protected $providers = array();
24
+
25
+    /**
26
+     * Registered definitions.
27
+     *
28
+     * @var mixed[]
29
+     */
30
+    private $definitions = array();
31
+
32
+    /**
33
+     * Aliases to share between fetches.
34
+     *
35
+     * @var <string, true>[]
36
+     */
37
+    private $shared = array();
38
+
39
+    /**
40
+     * Aliases of all the registered services.
41
+     *
42
+     * @var <string, true>[]
43
+     */
44
+    private $aliases = array();
45
+
46
+    /**
47
+     * Array of classes registered on the container.
48
+     *
49
+     * @var <string, true>[]
50
+     */
51
+    private $classes = array();
52
+
53
+    /**
54
+     * Current position in the loop.
55
+     *
56
+     * @var int
57
+     */
58
+    private $position;
59
+
60
+    /**
61
+     * 0-indexed array of aliases for looping.
62
+     *
63
+     * @var string[]
64
+     */
65
+    private $keys = array();
66
+
67
+    /**
68
+     * Create a new container with the given providers.
69
+     *
70
+     * Providers can be instances or the class of the provider as a string.
71
+     *
72
+     * @param ServiceProvider[]|string[] $providers
73
+     */
74
+    public function __construct( array $providers = array() ) {
75
+        // array_unique ensures we only register each provider once.
76
+        $providers = array_unique( array_merge( $this->providers, $providers ) );
77
+
78
+        foreach ( $providers as $provider ) {
79
+            if ( is_string( $provider ) && class_exists( $provider ) ) {
80
+                $provider = new $provider;
81
+            }
82
+
83
+            if ( $provider instanceof ServiceProvider ) {
84
+                $this->register( $provider );
85
+            }
86
+        }
87
+    }
88
+
89
+
90
+    /**
91
+     * {@inheritdoc}
92
+     *
93
+     * @param string|array $alias
94
+     * @param mixed        $definition
95
+     *
96
+     * @throws DefinedAliasException
97
+     *
98
+     * @return $this
99
+     */
100
+    public function define( $alias, $definition ) {
101
+        if ( is_array( $alias ) ) {
102
+            $class = current( $alias );
103
+            $alias = key( $alias );
104
+        }
105
+
106
+        if ( isset( $this->aliases[ $alias ] ) ) {
107
+            throw new DefinedAliasException( $alias );
108
+        }
109
+
110
+        $this->aliases[ $alias ]     = true;
111
+        $this->definitions[ $alias ] = $definition;
112
+
113
+        // Closures are treated as factories unless
114
+        // defined via Container::share.
115
+        if ( ! $definition instanceof \Closure ) {
116
+            $this->shared[ $alias ] = true;
117
+        }
118
+
119
+        if ( isset( $class ) ) {
120
+            $this->classes[ $class ] = $alias;
121
+        }
122
+
123
+        return $this;
124
+    }
125
+
126
+    /**
127
+     * {@inheritdoc}
128
+     *
129
+     * @param string|array $alias
130
+     * @param mixed        $definition
131
+     *
132
+     * @throws DefinedAliasException
133
+     *
134
+     * @return $this
135
+     */
136
+    public function share( $alias, $definition ) {
137
+        $this->define( $alias, $definition );
138
+
139
+        if ( is_array( $alias ) ) {
140
+            $alias = key( $alias );
141
+        }
142
+
143
+        $this->shared[ $alias ] = true;
144
+
145
+        return $this;
146
+    }
147
+
148
+    /**
149
+     * {@inheritdoc}
150
+     *
151
+     * @param string $alias
152
+     *
153
+     * @throws UndefinedAliasException
154
+     *
155
+     * @return mixed
156
+     */
157
+    public function fetch( $alias ) {
158
+        if ( isset( $this->classes[ $alias ] ) ) {
159
+            // If the alias is a class name,
160
+            // then retrieve its linked alias.
161
+            // This is only registered when
162
+            // registering using an array.
163
+            $alias = $this->classes[ $alias ];
164
+        }
165
+
166
+        if ( ! isset( $this->aliases[ $alias ] ) ) {
167
+            throw new UndefinedAliasException( $alias );
168
+        }
169
+
170
+        $value = $this->definitions[ $alias ];
171
+
172
+        // If the shared value is a closure,
173
+        // execute it and assign the result
174
+        // in place of the closure.
175
+        if ( $value instanceof \Closure ) {
176
+            $factory = $value;
177
+            $value   = $factory( $this );
178
+        }
179
+
180
+        // If the value is shared, save the shared value.
181
+        if ( isset( $this->shared[ $alias ] ) ) {
182
+            $this->definitions[ $alias ] = $value;
183
+        }
184
+
185
+        // Return the fetched value.
186
+        return $value;
187
+    }
188
+
189
+    /**
190
+     * {@inheritdoc}
191
+     *
192
+     * @param  string $alias
193
+     *
194
+     * @return bool
195
+     */
196
+    public function has( $alias ) {
197
+        return isset( $this->aliases[ $alias ] );
198
+    }
199
+
200
+    /**
201
+     * {@inheritDoc}
202
+     *
203
+     * @param string $alias
204
+     *
205
+     * @return $this
206
+     */
207
+    public function remove( $alias ) {
208
+        if ( isset( $this->aliases[ $alias ] ) ) {
209
+            /**
210
+             * If there's no reference in the aliases array,
211
+             * the service won't be found on fetching and
212
+             * can be overwritten on setting.
213
+             *
214
+             * Pros: Quick setting/unsetting, faster
215
+             * performance on those operations when doing
216
+             * a lot of these.
217
+             *
218
+             * Cons: Objects and values set in the container
219
+             * can't get garbage collected.
220
+             *
221
+             * If this is a problem, this may need to be revisited.
222
+             */
223
+            unset( $this->aliases[ $alias ] );
224
+        }
225
+
226
+        return $this;
227
+    }
228
+
229
+    /**
230
+     * {@inheritDoc}
231
+     *
232
+     * @param ServiceProvider $provider
233
+     *
234
+     * @return $this
235
+     */
236
+    public function register( ServiceProvider $provider ) {
237
+        // @todo make sure provider is only registered once
238
+        $provider->register( $this );
239
+
240
+        return $this;
241
+    }
242
+
243
+    /**
244
+     * Set a value into the container.
245
+     *
246
+     * @param  string $id
247
+     * @param  mixed  $value
248
+     *
249
+     * @see    define
250
+     */
251
+    public function offsetSet( $id, $value ) {
252
+        $this->define( $id, $value );
253
+    }
254
+
255
+    /**
256
+     * Get an value from the container.
257
+     *
258
+     * @param  string $id
259
+     *
260
+     * @return object
261
+     * @throws UndefinedAliasException
262
+     *
263
+     * @see    fetch
264
+     */
265
+    public function offsetGet( $id ) {
266
+        return $this->fetch( $id );
267
+    }
268
+
269
+    /**
270
+     * Checks if a key is set on the container.
271
+     *
272
+     * @param  string $id
273
+     *
274
+     * @return bool
275
+     *
276
+     * @see    has
277
+     */
278
+    public function offsetExists( $id ) {
279
+        return $this->has( $id );
280
+    }
281
+
282
+    /**
283
+     * Remove a key from the container.
284
+     *
285
+     * @param string $id
286
+     *
287
+     * @see   remove
288
+     */
289
+    public function offsetUnset( $id ) {
290
+        $this->remove( $id );
291
+    }
292
+
293
+    /**
294
+     * Sets the object properties to prepare for the loop.
295
+     */
296
+    public function rewind() {
297
+        $this->position = 0;
298
+        $this->keys     = array_keys( $this->aliases );
299
+    }
300
+
301
+    /**
302
+     * Retrieves the service object for the current step in the loop.
303
+     *
304
+     * @return object
305
+     */
306
+    public function current() {
307
+        return $this->fetch( $this->keys[ $this->position ] );
308
+    }
309
+
310
+    /**
311
+     * Retrieves the key for the current step in the loop.
312
+     *
313
+     * @return string
314
+     */
315
+    public function key() {
316
+        return $this->keys[ $this->position ];
317
+    }
318
+
319
+    /**
320
+     * Increments to the next step in the loop.
321
+     */
322
+    public function next() {
323
+        $this->position ++;
324
+    }
325
+
326
+    /**
327
+     * Checks if the next step in the loop in valid.
328
+     *
329
+     * @return bool
330
+     */
331
+    public function valid() {
332
+        return isset( $this->keys[ $this->position ] );
333
+    }
334 334
 }
Please login to merge, or discard this patch.
Spacing   +53 added lines, -53 removed lines patch added patch discarded remove patch
@@ -71,17 +71,17 @@  discard block
 block discarded – undo
71 71
 	 *
72 72
 	 * @param ServiceProvider[]|string[] $providers
73 73
 	 */
74
-	public function __construct( array $providers = array() ) {
74
+	public function __construct(array $providers = array()) {
75 75
 		// array_unique ensures we only register each provider once.
76
-		$providers = array_unique( array_merge( $this->providers, $providers ) );
76
+		$providers = array_unique(array_merge($this->providers, $providers));
77 77
 
78
-		foreach ( $providers as $provider ) {
79
-			if ( is_string( $provider ) && class_exists( $provider ) ) {
78
+		foreach ($providers as $provider) {
79
+			if (is_string($provider) && class_exists($provider)) {
80 80
 				$provider = new $provider;
81 81
 			}
82 82
 
83
-			if ( $provider instanceof ServiceProvider ) {
84
-				$this->register( $provider );
83
+			if ($provider instanceof ServiceProvider) {
84
+				$this->register($provider);
85 85
 			}
86 86
 		}
87 87
 	}
@@ -97,27 +97,27 @@  discard block
 block discarded – undo
97 97
 	 *
98 98
 	 * @return $this
99 99
 	 */
100
-	public function define( $alias, $definition ) {
101
-		if ( is_array( $alias ) ) {
102
-			$class = current( $alias );
103
-			$alias = key( $alias );
100
+	public function define($alias, $definition) {
101
+		if (is_array($alias)) {
102
+			$class = current($alias);
103
+			$alias = key($alias);
104 104
 		}
105 105
 
106
-		if ( isset( $this->aliases[ $alias ] ) ) {
107
-			throw new DefinedAliasException( $alias );
106
+		if (isset($this->aliases[$alias])) {
107
+			throw new DefinedAliasException($alias);
108 108
 		}
109 109
 
110
-		$this->aliases[ $alias ]     = true;
111
-		$this->definitions[ $alias ] = $definition;
110
+		$this->aliases[$alias]     = true;
111
+		$this->definitions[$alias] = $definition;
112 112
 
113 113
 		// Closures are treated as factories unless
114 114
 		// defined via Container::share.
115
-		if ( ! $definition instanceof \Closure ) {
116
-			$this->shared[ $alias ] = true;
115
+		if (!$definition instanceof \Closure) {
116
+			$this->shared[$alias] = true;
117 117
 		}
118 118
 
119
-		if ( isset( $class ) ) {
120
-			$this->classes[ $class ] = $alias;
119
+		if (isset($class)) {
120
+			$this->classes[$class] = $alias;
121 121
 		}
122 122
 
123 123
 		return $this;
@@ -133,14 +133,14 @@  discard block
 block discarded – undo
133 133
 	 *
134 134
 	 * @return $this
135 135
 	 */
136
-	public function share( $alias, $definition ) {
137
-		$this->define( $alias, $definition );
136
+	public function share($alias, $definition) {
137
+		$this->define($alias, $definition);
138 138
 
139
-		if ( is_array( $alias ) ) {
140
-			$alias = key( $alias );
139
+		if (is_array($alias)) {
140
+			$alias = key($alias);
141 141
 		}
142 142
 
143
-		$this->shared[ $alias ] = true;
143
+		$this->shared[$alias] = true;
144 144
 
145 145
 		return $this;
146 146
 	}
@@ -154,32 +154,32 @@  discard block
 block discarded – undo
154 154
 	 *
155 155
 	 * @return mixed
156 156
 	 */
157
-	public function fetch( $alias ) {
158
-		if ( isset( $this->classes[ $alias ] ) ) {
157
+	public function fetch($alias) {
158
+		if (isset($this->classes[$alias])) {
159 159
 			// If the alias is a class name,
160 160
 			// then retrieve its linked alias.
161 161
 			// This is only registered when
162 162
 			// registering using an array.
163
-			$alias = $this->classes[ $alias ];
163
+			$alias = $this->classes[$alias];
164 164
 		}
165 165
 
166
-		if ( ! isset( $this->aliases[ $alias ] ) ) {
167
-			throw new UndefinedAliasException( $alias );
166
+		if (!isset($this->aliases[$alias])) {
167
+			throw new UndefinedAliasException($alias);
168 168
 		}
169 169
 
170
-		$value = $this->definitions[ $alias ];
170
+		$value = $this->definitions[$alias];
171 171
 
172 172
 		// If the shared value is a closure,
173 173
 		// execute it and assign the result
174 174
 		// in place of the closure.
175
-		if ( $value instanceof \Closure ) {
175
+		if ($value instanceof \Closure) {
176 176
 			$factory = $value;
177
-			$value   = $factory( $this );
177
+			$value   = $factory($this);
178 178
 		}
179 179
 
180 180
 		// If the value is shared, save the shared value.
181
-		if ( isset( $this->shared[ $alias ] ) ) {
182
-			$this->definitions[ $alias ] = $value;
181
+		if (isset($this->shared[$alias])) {
182
+			$this->definitions[$alias] = $value;
183 183
 		}
184 184
 
185 185
 		// Return the fetched value.
@@ -193,8 +193,8 @@  discard block
 block discarded – undo
193 193
 	 *
194 194
 	 * @return bool
195 195
 	 */
196
-	public function has( $alias ) {
197
-		return isset( $this->aliases[ $alias ] );
196
+	public function has($alias) {
197
+		return isset($this->aliases[$alias]);
198 198
 	}
199 199
 
200 200
 	/**
@@ -204,8 +204,8 @@  discard block
 block discarded – undo
204 204
 	 *
205 205
 	 * @return $this
206 206
 	 */
207
-	public function remove( $alias ) {
208
-		if ( isset( $this->aliases[ $alias ] ) ) {
207
+	public function remove($alias) {
208
+		if (isset($this->aliases[$alias])) {
209 209
 			/**
210 210
 			 * If there's no reference in the aliases array,
211 211
 			 * the service won't be found on fetching and
@@ -220,7 +220,7 @@  discard block
 block discarded – undo
220 220
 			 *
221 221
 			 * If this is a problem, this may need to be revisited.
222 222
 			 */
223
-			unset( $this->aliases[ $alias ] );
223
+			unset($this->aliases[$alias]);
224 224
 		}
225 225
 
226 226
 		return $this;
@@ -233,9 +233,9 @@  discard block
 block discarded – undo
233 233
 	 *
234 234
 	 * @return $this
235 235
 	 */
236
-	public function register( ServiceProvider $provider ) {
236
+	public function register(ServiceProvider $provider) {
237 237
 		// @todo make sure provider is only registered once
238
-		$provider->register( $this );
238
+		$provider->register($this);
239 239
 
240 240
 		return $this;
241 241
 	}
@@ -248,8 +248,8 @@  discard block
 block discarded – undo
248 248
 	 *
249 249
 	 * @see    define
250 250
 	 */
251
-	public function offsetSet( $id, $value ) {
252
-		$this->define( $id, $value );
251
+	public function offsetSet($id, $value) {
252
+		$this->define($id, $value);
253 253
 	}
254 254
 
255 255
 	/**
@@ -262,8 +262,8 @@  discard block
 block discarded – undo
262 262
 	 *
263 263
 	 * @see    fetch
264 264
 	 */
265
-	public function offsetGet( $id ) {
266
-		return $this->fetch( $id );
265
+	public function offsetGet($id) {
266
+		return $this->fetch($id);
267 267
 	}
268 268
 
269 269
 	/**
@@ -275,8 +275,8 @@  discard block
 block discarded – undo
275 275
 	 *
276 276
 	 * @see    has
277 277
 	 */
278
-	public function offsetExists( $id ) {
279
-		return $this->has( $id );
278
+	public function offsetExists($id) {
279
+		return $this->has($id);
280 280
 	}
281 281
 
282 282
 	/**
@@ -286,8 +286,8 @@  discard block
 block discarded – undo
286 286
 	 *
287 287
 	 * @see   remove
288 288
 	 */
289
-	public function offsetUnset( $id ) {
290
-		$this->remove( $id );
289
+	public function offsetUnset($id) {
290
+		$this->remove($id);
291 291
 	}
292 292
 
293 293
 	/**
@@ -295,7 +295,7 @@  discard block
 block discarded – undo
295 295
 	 */
296 296
 	public function rewind() {
297 297
 		$this->position = 0;
298
-		$this->keys     = array_keys( $this->aliases );
298
+		$this->keys     = array_keys($this->aliases);
299 299
 	}
300 300
 
301 301
 	/**
@@ -304,7 +304,7 @@  discard block
 block discarded – undo
304 304
 	 * @return object
305 305
 	 */
306 306
 	public function current() {
307
-		return $this->fetch( $this->keys[ $this->position ] );
307
+		return $this->fetch($this->keys[$this->position]);
308 308
 	}
309 309
 
310 310
 	/**
@@ -313,14 +313,14 @@  discard block
 block discarded – undo
313 313
 	 * @return string
314 314
 	 */
315 315
 	public function key() {
316
-		return $this->keys[ $this->position ];
316
+		return $this->keys[$this->position];
317 317
 	}
318 318
 
319 319
 	/**
320 320
 	 * Increments to the next step in the loop.
321 321
 	 */
322 322
 	public function next() {
323
-		$this->position ++;
323
+		$this->position++;
324 324
 	}
325 325
 
326 326
 	/**
@@ -329,6 +329,6 @@  discard block
 block discarded – undo
329 329
 	 * @return bool
330 330
 	 */
331 331
 	public function valid() {
332
-		return isset( $this->keys[ $this->position ] );
332
+		return isset($this->keys[$this->position]);
333 333
 	}
334 334
 }
Please login to merge, or discard this patch.
src/Utility/Str.php 2 patches
Indentation   +32 added lines, -32 removed lines patch added patch discarded remove patch
@@ -11,39 +11,39 @@
 block discarded – undo
11 11
  * @subpackage Utility
12 12
  */
13 13
 class Str {
14
-	/**
15
-	 * Determine if a given string starts with a given substring.
16
-	 *
17
-	 * @param  string       $haystack
18
-	 * @param  string|array $needles
19
-	 *
20
-	 * @return bool
21
-	 */
22
-	public static function starts_with( $haystack, $needles ) {
23
-		foreach ( (array) $needles as $needle ) {
24
-			if ( '' !== $needle && 0 === strpos( $haystack, $needle ) ) {
25
-				return true;
26
-			}
27
-		}
14
+    /**
15
+     * Determine if a given string starts with a given substring.
16
+     *
17
+     * @param  string       $haystack
18
+     * @param  string|array $needles
19
+     *
20
+     * @return bool
21
+     */
22
+    public static function starts_with( $haystack, $needles ) {
23
+        foreach ( (array) $needles as $needle ) {
24
+            if ( '' !== $needle && 0 === strpos( $haystack, $needle ) ) {
25
+                return true;
26
+            }
27
+        }
28 28
 
29
-		return false;
30
-	}
29
+        return false;
30
+    }
31 31
 
32
-	/**
33
-	 * Determine if a given string ends with a given substring.
34
-	 *
35
-	 * @param  string       $haystack
36
-	 * @param  string|array $needles
37
-	 *
38
-	 * @return bool
39
-	 */
40
-	public static function ends_with( $haystack, $needles ) {
41
-		foreach ( (array) $needles as $needle ) {
42
-			if ( substr( $haystack, - strlen( $needle ) ) === (string) $needle ) {
43
-				return true;
44
-			}
45
-		}
32
+    /**
33
+     * Determine if a given string ends with a given substring.
34
+     *
35
+     * @param  string       $haystack
36
+     * @param  string|array $needles
37
+     *
38
+     * @return bool
39
+     */
40
+    public static function ends_with( $haystack, $needles ) {
41
+        foreach ( (array) $needles as $needle ) {
42
+            if ( substr( $haystack, - strlen( $needle ) ) === (string) $needle ) {
43
+                return true;
44
+            }
45
+        }
46 46
 
47
-		return false;
48
-	}
47
+        return false;
48
+    }
49 49
 }
Please login to merge, or discard this patch.
Spacing   +6 added lines, -6 removed lines patch added patch discarded remove patch
@@ -19,9 +19,9 @@  discard block
 block discarded – undo
19 19
 	 *
20 20
 	 * @return bool
21 21
 	 */
22
-	public static function starts_with( $haystack, $needles ) {
23
-		foreach ( (array) $needles as $needle ) {
24
-			if ( '' !== $needle && 0 === strpos( $haystack, $needle ) ) {
22
+	public static function starts_with($haystack, $needles) {
23
+		foreach ((array) $needles as $needle) {
24
+			if ('' !== $needle && 0 === strpos($haystack, $needle)) {
25 25
 				return true;
26 26
 			}
27 27
 		}
@@ -37,9 +37,9 @@  discard block
 block discarded – undo
37 37
 	 *
38 38
 	 * @return bool
39 39
 	 */
40
-	public static function ends_with( $haystack, $needles ) {
41
-		foreach ( (array) $needles as $needle ) {
42
-			if ( substr( $haystack, - strlen( $needle ) ) === (string) $needle ) {
40
+	public static function ends_with($haystack, $needles) {
41
+		foreach ((array) $needles as $needle) {
42
+			if (substr($haystack, - strlen($needle)) === (string) $needle) {
43 43
 				return true;
44 44
 			}
45 45
 		}
Please login to merge, or discard this patch.
src/Contract/Core/I18n.php 1 patch
Indentation   +6 added lines, -6 removed lines patch added patch discarded remove patch
@@ -2,10 +2,10 @@
 block discarded – undo
2 2
 namespace Intraxia\Jaxion\Contract\Core;
3 3
 
4 4
 interface I18n {
5
-	/**
6
-	 * Loads the plugin's textdomain.
7
-	 *
8
-	 * @return void
9
-	 */
10
-	public function load_plugin_textdomain();
5
+    /**
6
+     * Loads the plugin's textdomain.
7
+     *
8
+     * @return void
9
+     */
10
+    public function load_plugin_textdomain();
11 11
 }
Please login to merge, or discard this patch.
src/Core/I18n.php 2 patches
Indentation   +45 added lines, -45 removed lines patch added patch discarded remove patch
@@ -11,53 +11,53 @@
 block discarded – undo
11 11
  * @subpackage Core
12 12
  */
13 13
 class I18n implements I18nContract, HasActions {
14
-	/**
15
-	 * Plugin basename
16
-	 *
17
-	 * @var string
18
-	 */
19
-	private $basename;
14
+    /**
15
+     * Plugin basename
16
+     *
17
+     * @var string
18
+     */
19
+    private $basename;
20 20
 
21
-	/**
22
-	 * Plugin path.
23
-	 *
24
-	 * @var string
25
-	 */
26
-	private $path;
21
+    /**
22
+     * Plugin path.
23
+     *
24
+     * @var string
25
+     */
26
+    private $path;
27 27
 
28
-	/**
29
-	 * I18n constructor.
30
-	 *
31
-	 * @param string $basename Plugin basename.
32
-	 * @param string $path     Plugin path.
33
-	 */
34
-	public function __construct( $basename, $path ) {
35
-		$this->basename = $basename;
36
-		$this->path = $path;
37
-	}
28
+    /**
29
+     * I18n constructor.
30
+     *
31
+     * @param string $basename Plugin basename.
32
+     * @param string $path     Plugin path.
33
+     */
34
+    public function __construct( $basename, $path ) {
35
+        $this->basename = $basename;
36
+        $this->path = $path;
37
+    }
38 38
 
39
-	/**
40
-	 * {@inheritdoc}
41
-	 */
42
-	public function load_plugin_textdomain() {
43
-		load_plugin_textdomain(
44
-			$this->basename,
45
-			false,
46
-			basename( $this->path ) . '/languages/'
47
-		);
48
-	}
39
+    /**
40
+     * {@inheritdoc}
41
+     */
42
+    public function load_plugin_textdomain() {
43
+        load_plugin_textdomain(
44
+            $this->basename,
45
+            false,
46
+            basename( $this->path ) . '/languages/'
47
+        );
48
+    }
49 49
 
50
-	/**
51
-	 * {@inheritDoc}
52
-	 *
53
-	 * @return array
54
-	 */
55
-	public function action_hooks() {
56
-		return array(
57
-			array(
58
-				'hook'   => 'init',
59
-				'method' => 'load_plugin_textdomain',
60
-			),
61
-		);
62
-	}
50
+    /**
51
+     * {@inheritDoc}
52
+     *
53
+     * @return array
54
+     */
55
+    public function action_hooks() {
56
+        return array(
57
+            array(
58
+                'hook'   => 'init',
59
+                'method' => 'load_plugin_textdomain',
60
+            ),
61
+        );
62
+    }
63 63
 }
Please login to merge, or discard this patch.
Spacing   +2 added lines, -2 removed lines patch added patch discarded remove patch
@@ -31,7 +31,7 @@  discard block
 block discarded – undo
31 31
 	 * @param string $basename Plugin basename.
32 32
 	 * @param string $path     Plugin path.
33 33
 	 */
34
-	public function __construct( $basename, $path ) {
34
+	public function __construct($basename, $path) {
35 35
 		$this->basename = $basename;
36 36
 		$this->path = $path;
37 37
 	}
@@ -43,7 +43,7 @@  discard block
 block discarded – undo
43 43
 		load_plugin_textdomain(
44 44
 			$this->basename,
45 45
 			false,
46
-			basename( $this->path ) . '/languages/'
46
+			basename($this->path).'/languages/'
47 47
 		);
48 48
 	}
49 49
 
Please login to merge, or discard this patch.
src/Contract/Axolotl/EntityManager.php 2 patches
Indentation   +46 added lines, -46 removed lines patch added patch discarded remove patch
@@ -6,54 +6,54 @@
 block discarded – undo
6 6
 use WP_Error;
7 7
 
8 8
 interface EntityManager {
9
-	/**
10
-	 * Get a single model of the provided class with the given ID.
11
-	 *
12
-	 * @param string $class Fully qualified class name of model.
13
-	 * @param int    $id    ID of the model.
14
-	 *
15
-	 * @return Model|WP_Error
16
-	 */
17
-	public function find( $class, $id );
9
+    /**
10
+     * Get a single model of the provided class with the given ID.
11
+     *
12
+     * @param string $class Fully qualified class name of model.
13
+     * @param int    $id    ID of the model.
14
+     *
15
+     * @return Model|WP_Error
16
+     */
17
+    public function find( $class, $id );
18 18
 
19
-	/**
20
-	 * Finds all the models of the provided class for the given params.
21
-	 *
22
-	 * This method will return an empty Collection if the query returns no models.
23
-	 *
24
-	 * @param string $class  Fully qualified class name of models to find.
25
-	 * @param array  $params Params to constrain the find.
26
-	 *
27
-	 * @return Collection|WP_Error
28
-	 */
29
-	public function find_by( $class, array $params = array() );
19
+    /**
20
+     * Finds all the models of the provided class for the given params.
21
+     *
22
+     * This method will return an empty Collection if the query returns no models.
23
+     *
24
+     * @param string $class  Fully qualified class name of models to find.
25
+     * @param array  $params Params to constrain the find.
26
+     *
27
+     * @return Collection|WP_Error
28
+     */
29
+    public function find_by( $class, array $params = array() );
30 30
 
31
-	/**
32
-	 * Saves a new model of the provided class with the given data.
33
-	 *
34
-	 * @param string $class
35
-	 * @param array  $data
36
-	 *
37
-	 * @return Model|WP_Error
38
-	 */
39
-	public function create( $class, array $data = array() );
31
+    /**
32
+     * Saves a new model of the provided class with the given data.
33
+     *
34
+     * @param string $class
35
+     * @param array  $data
36
+     *
37
+     * @return Model|WP_Error
38
+     */
39
+    public function create( $class, array $data = array() );
40 40
 
41
-	/**
42
-	 * Updates a model with its latest dataE.
43
-	 *
44
-	 * @param Model $model
45
-	 *
46
-	 * @return Model|WP_Error
47
-	 */
48
-	public function persist( Model $model );
41
+    /**
42
+     * Updates a model with its latest dataE.
43
+     *
44
+     * @param Model $model
45
+     *
46
+     * @return Model|WP_Error
47
+     */
48
+    public function persist( Model $model );
49 49
 
50
-	/**
51
-	 * Delete the provide
52
-	 *
53
-	 * @param Model $model
54
-	 * @param bool  $force
55
-	 *
56
-	 * @return mixed
57
-	 */
58
-	public function delete( Model $model, $force = false );
50
+    /**
51
+     * Delete the provide
52
+     *
53
+     * @param Model $model
54
+     * @param bool  $force
55
+     *
56
+     * @return mixed
57
+     */
58
+    public function delete( Model $model, $force = false );
59 59
 }
Please login to merge, or discard this patch.
Spacing   +5 added lines, -5 removed lines patch added patch discarded remove patch
@@ -14,7 +14,7 @@  discard block
 block discarded – undo
14 14
 	 *
15 15
 	 * @return Model|WP_Error
16 16
 	 */
17
-	public function find( $class, $id );
17
+	public function find($class, $id);
18 18
 
19 19
 	/**
20 20
 	 * Finds all the models of the provided class for the given params.
@@ -26,7 +26,7 @@  discard block
 block discarded – undo
26 26
 	 *
27 27
 	 * @return Collection|WP_Error
28 28
 	 */
29
-	public function find_by( $class, array $params = array() );
29
+	public function find_by($class, array $params = array());
30 30
 
31 31
 	/**
32 32
 	 * Saves a new model of the provided class with the given data.
@@ -36,7 +36,7 @@  discard block
 block discarded – undo
36 36
 	 *
37 37
 	 * @return Model|WP_Error
38 38
 	 */
39
-	public function create( $class, array $data = array() );
39
+	public function create($class, array $data = array());
40 40
 
41 41
 	/**
42 42
 	 * Updates a model with its latest dataE.
@@ -45,7 +45,7 @@  discard block
 block discarded – undo
45 45
 	 *
46 46
 	 * @return Model|WP_Error
47 47
 	 */
48
-	public function persist( Model $model );
48
+	public function persist(Model $model);
49 49
 
50 50
 	/**
51 51
 	 * Delete the provide
@@ -55,5 +55,5 @@  discard block
 block discarded – undo
55 55
 	 *
56 56
 	 * @return mixed
57 57
 	 */
58
-	public function delete( Model $model, $force = false );
58
+	public function delete(Model $model, $force = false);
59 59
 }
Please login to merge, or discard this patch.
src/Axolotl/Model.php 2 patches
Indentation   +730 added lines, -730 removed lines patch added patch discarded remove patch
@@ -21,734 +21,734 @@
 block discarded – undo
21 21
  * @since      0.1.0
22 22
  */
23 23
 abstract class Model implements Serializes {
24
-	/**
25
-	 * Table attribute key.
26
-	 */
27
-	const TABLE_KEY = '@@table';
28
-
29
-	/**
30
-	 * Object attribute key.
31
-	 */
32
-	const OBJECT_KEY = '@@object';
33
-
34
-	/**
35
-	 * Memoized values for class methods.
36
-	 *
37
-	 * @var array
38
-	 */
39
-	private static $memo = array();
40
-
41
-	/**
42
-	 * Model attributes.
43
-	 *
44
-	 * @var array
45
-	 */
46
-	private $attributes = array(
47
-		self::TABLE_KEY  => array(),
48
-		self::OBJECT_KEY => null,
49
-	);
50
-
51
-	/**
52
-	 * Model's original attributes.
53
-	 *
54
-	 * @var array
55
-	 */
56
-	private $original = array(
57
-		self::TABLE_KEY  => array(),
58
-		self::OBJECT_KEY => null,
59
-	);
60
-
61
-	/**
62
-	 * Default attribute values.
63
-	 *
64
-	 * @var array
65
-	 */
66
-	protected $defaults = array();
67
-
68
-	/**
69
-	 * Properties which are allowed to be set on the model.
70
-	 *
71
-	 * If this array is empty, any attributes can be set on the model.
72
-	 *
73
-	 * @var string[]
74
-	 */
75
-	protected $fillable = array();
76
-
77
-	/**
78
-	 * Properties which cannot be automatically filled on the model.
79
-	 *
80
-	 * If the model is unguarded, these properties can be filled.
81
-	 *
82
-	 * @var array
83
-	 */
84
-	protected $guarded = array();
85
-
86
-	/**
87
-	 * Properties which should not be serialized.
88
-	 *
89
-	 * @var array
90
-	 */
91
-	protected $hidden = array();
92
-
93
-	/**
94
-	 * Properties which should be serialized.
95
-	 *
96
-	 * @var array
97
-	 */
98
-	protected $visible = array();
99
-
100
-	/**
101
-	 * Whether the model's properties are guarded.
102
-	 *
103
-	 * When false, allows guarded properties to be filled.
104
-	 *
105
-	 * @var bool
106
-	 */
107
-	protected $is_guarded = true;
108
-
109
-	/**
110
-	 * Constructs a new model with provided attributes.
111
-	 *
112
-	 * If self::OBJECT_KEY is passed as one of the attributes, the underlying post
113
-	 * will be overwritten.
114
-	 *
115
-	 * @param array <string, mixed> $attributes
116
-	 */
117
-	public function __construct( array $attributes = array() ) {
118
-		$this->maybe_boot();
119
-		$this->sync_original();
120
-
121
-		if ( $this->uses_wp_object() ) {
122
-			$this->create_wp_object();
123
-		}
124
-
125
-		$this->unguard();
126
-		$this->refresh( $attributes );
127
-		$this->reguard();
128
-	}
129
-
130
-	/**
131
-	 * Refreshes the model's current attributes with the provided array.
132
-	 *
133
-	 * The model's attributes will match what was provided in the array,
134
-	 * and any attributes not passed
135
-	 *
136
-	 * @param array $attributes
137
-	 *
138
-	 * @return $this
139
-	 */
140
-	public function refresh( array $attributes ) {
141
-		$this->clear();
142
-
143
-		return $this->merge( $attributes );
144
-	}
145
-
146
-	/**
147
-	 * Merges the provided attributes with the provided array.
148
-	 *
149
-	 * @param array $attributes
150
-	 *
151
-	 * @return $this
152
-	 */
153
-	public function merge( array $attributes ) {
154
-		foreach ( $attributes as $name => $value ) {
155
-			$this->set_attribute( $name, $value );
156
-		}
157
-
158
-		return $this;
159
-	}
160
-
161
-	/**
162
-	 * Get the model's table attributes.
163
-	 *
164
-	 * Returns the array of for the model that will either need to be
165
-	 * saved in postmeta or a separate table.
166
-	 *
167
-	 * @return array
168
-	 */
169
-	public function get_table_attributes() {
170
-		return $this->attributes[ self::TABLE_KEY ];
171
-	}
172
-
173
-	/**
174
-	 * Get the model's original attributes.
175
-	 *
176
-	 * @return array
177
-	 */
178
-	public function get_original_table_attributes() {
179
-		return $this->original[ self::TABLE_KEY ];
180
-	}
181
-
182
-	/**
183
-	 * Retrieve an array of the attributes on the model
184
-	 * that have changed compared to the model's
185
-	 * original data.
186
-	 *
187
-	 * @return array
188
-	 */
189
-	public function get_changed_table_attributes() {
190
-		$changed = array();
191
-
192
-		foreach ( $this->get_table_attributes() as $key => $value ) {
193
-			if ( $value !==
194
-			     $this->get_original_attribute( $key )
195
-			) {
196
-				$changed[ $key ] = $value;
197
-			}
198
-		}
199
-
200
-		return $changed;
201
-	}
202
-
203
-	/**
204
-	 * Get the model's underlying post.
205
-	 *
206
-	 * Returns the underlying WP_Post object for the model, representing
207
-	 * the data that will be save in the wp_posts table.
208
-	 *
209
-	 * @return false|WP_Post|WP_Term
210
-	 */
211
-	public function get_underlying_wp_object() {
212
-		if ( isset( $this->attributes[ self::OBJECT_KEY ] ) ) {
213
-			return $this->attributes[ self::OBJECT_KEY ];
214
-		}
215
-
216
-		return false;
217
-	}
218
-
219
-	/**
220
-	 * Get the model's original underlying post.
221
-	 *
222
-	 * @return WP_Post
223
-	 */
224
-	public function get_original_underlying_wp_object() {
225
-		return $this->original[ self::OBJECT_KEY ];
226
-	}
227
-
228
-	/**
229
-	 * Get the model attributes on the WordPress object
230
-	 * that have changed compared to the model's
231
-	 * original attributes.
232
-	 *
233
-	 * @return array
234
-	 */
235
-	public function get_changed_wp_object_attributes() {
236
-		$changed = array();
237
-
238
-		foreach ( $this->get_wp_object_keys() as $key ) {
239
-			if ( $this->get_attribute( $key ) !==
240
-			     $this->get_original_attribute( $key )
241
-			) {
242
-				$changed[ $key ] = $this->get_attribute( $key );
243
-			}
244
-		}
245
-
246
-		return $changed;
247
-	}
248
-
249
-	/**
250
-	 * Magic __set method.
251
-	 *
252
-	 * Passes the name and value to set_attribute, which is where the magic happens.
253
-	 *
254
-	 * @param string $name
255
-	 * @param mixed  $value
256
-	 */
257
-	public function __set( $name, $value ) {
258
-		$this->set_attribute( $name, $value );
259
-	}
260
-
261
-	/**
262
-	 * Sets the model attributes.
263
-	 *
264
-	 * Checks whether the model attribute can be set, check if it
265
-	 * maps to the WP_Post property, otherwise, assigns it to the
266
-	 * table attribute array.
267
-	 *
268
-	 * @param string $name
269
-	 * @param mixed  $value
270
-	 *
271
-	 * @return $this
272
-	 *
273
-	 * @throws GuardedPropertyException
274
-	 */
275
-	public function set_attribute( $name, $value ) {
276
-		if ( self::OBJECT_KEY === $name ) {
277
-			return $this->override_wp_object( $value );
278
-		}
279
-
280
-		if ( self::TABLE_KEY === $name ) {
281
-			return $this->override_table( $value );
282
-		}
283
-
284
-		if ( ! $this->is_fillable( $name ) ) {
285
-			throw new GuardedPropertyException;
286
-		}
287
-
288
-		if ( $method = $this->has_map_method( $name ) ) {
289
-			$this->attributes[ self::OBJECT_KEY ]->{$this->{$method}()} = $value;
290
-		} else {
291
-			$this->attributes[ self::TABLE_KEY ][ $name ] = $value;
292
-		}
293
-
294
-		return $this;
295
-	}
296
-
297
-	/**
298
-	 * Retrieves all the attribute keys for the model.
299
-	 *
300
-	 * @return array
301
-	 */
302
-	public function get_attribute_keys() {
303
-		if ( isset( self::$memo[ get_called_class() ][ __METHOD__ ] ) ) {
304
-			return self::$memo[ get_called_class() ][ __METHOD__ ];
305
-		}
306
-
307
-		return self::$memo[ get_called_class() ][ __METHOD__ ]
308
-			= array_merge(
309
-				$this->fillable,
310
-				$this->guarded,
311
-				$this->get_compute_methods()
312
-			);
313
-	}
314
-
315
-	/**
316
-	 * Retrieves the attribute keys that aren't mapped to a post.
317
-	 *
318
-	 * @return array
319
-	 */
320
-	public function get_table_keys() {
321
-		if ( isset( self::$memo[ get_called_class() ][ __METHOD__ ] ) ) {
322
-			return self::$memo[ get_called_class() ][ __METHOD__ ];
323
-		}
324
-
325
-		$keys = array();
326
-
327
-		foreach ( $this->get_attribute_keys() as $key ) {
328
-			if ( ! $this->has_map_method( $key ) &&
329
-			     ! $this->has_compute_method( $key )
330
-			) {
331
-				$keys[] = $key;
332
-			}
333
-		}
334
-
335
-		return self::$memo[ get_called_class() ][ __METHOD__ ] = $keys;
336
-	}
337
-
338
-	/**
339
-	 * Retrieves the attribute keys that are mapped to a post.
340
-	 *
341
-	 * @return array
342
-	 */
343
-	public function get_wp_object_keys() {
344
-		if ( isset( self::$memo[ get_called_class() ][ __METHOD__ ] ) ) {
345
-			return self::$memo[ get_called_class() ][ __METHOD__ ];
346
-		}
347
-
348
-		$keys = array();
349
-
350
-		foreach ( $this->get_attribute_keys() as $key ) {
351
-			if ( $this->has_map_method( $key ) ) {
352
-				$keys[] = $key;
353
-			}
354
-		}
355
-
356
-		return self::$memo[ get_called_class() ][ __METHOD__ ] = $keys;
357
-	}
358
-
359
-	/**
360
-	 * Returns the model's keys that are computed at call time.
361
-	 *
362
-	 * @return array
363
-	 */
364
-	public function get_computed_keys() {
365
-		if ( isset( self::$memo[ get_called_class() ][ __METHOD__ ] ) ) {
366
-			return self::$memo[ get_called_class() ][ __METHOD__ ];
367
-		}
368
-
369
-		$keys = array();
370
-
371
-		foreach ( $this->get_attribute_keys() as $key ) {
372
-			if ( $this->has_compute_method( $key ) ) {
373
-				$keys[] = $key;
374
-			}
375
-		}
376
-
377
-		return self::$memo[ get_called_class() ][ __METHOD__ ] = $keys;
378
-	}
379
-
380
-	/**
381
-	 * Serializes the model's public data into an array.
382
-	 *
383
-	 * @return array
384
-	 */
385
-	public function serialize() {
386
-		$attributes = array();
387
-
388
-		if ( $this->visible ) {
389
-			// If visible attributes are set, we'll only reveal those.
390
-			foreach ( $this->visible as $key ) {
391
-				$attributes[ $key ] = $this->get_attribute( $key );
392
-			}
393
-		} elseif ( $this->hidden ) {
394
-			// If hidden attributes are set, we'll grab everything and hide those.
395
-			foreach ( $this->get_attribute_keys() as $key ) {
396
-				if ( ! in_array( $key, $this->hidden ) ) {
397
-					$attributes[ $key ] = $this->get_attribute( $key );
398
-				}
399
-			}
400
-		} else {
401
-			// If nothing is hidden/visible, we'll grab and reveal everything.
402
-			foreach ( $this->get_attribute_keys() as $key ) {
403
-				$attributes[ $key ] = $this->get_attribute( $key );
404
-			}
405
-		}
406
-
407
-		return array_map( function ( $attribute ) {
408
-			if ( $attribute instanceof Serializes ) {
409
-				return $attribute->serialize();
410
-			}
411
-
412
-			return $attribute;
413
-		}, $attributes );
414
-	}
415
-
416
-	/**
417
-	 * Syncs the current attributes to the model's original.
418
-	 *
419
-	 * @return $this
420
-	 */
421
-	public function sync_original() {
422
-		$this->original = $this->attributes;
423
-
424
-		if ( $this->attributes[ self::OBJECT_KEY ] ) {
425
-			$this->original[ self::OBJECT_KEY ] = clone $this->attributes[ self::OBJECT_KEY ];
426
-		}
427
-
428
-		foreach ( $this->original[ self::TABLE_KEY ] as $key => $item ) {
429
-			if ( is_object( $item ) ) {
430
-				$this->original[ $key ] = clone $item;
431
-			}
432
-		}
433
-
434
-		return $this;
435
-	}
436
-
437
-	/**
438
-	 * Checks if a given attribute is mass-fillable.
439
-	 *
440
-	 * Returns true if the attribute can be filled, false if it can't.
441
-	 *
442
-	 * @param string $name
443
-	 *
444
-	 * @return bool
445
-	 */
446
-	private function is_fillable( $name ) {
447
-		// If this model isn't guarded, everything is fillable.
448
-		if ( ! $this->is_guarded ) {
449
-			return true;
450
-		}
451
-
452
-		// If it's in the fillable array, then it's fillable.
453
-		if ( in_array( $name, $this->fillable ) ) {
454
-			return true;
455
-		}
456
-
457
-		// If it's explicitly guarded, then it's not fillable.
458
-		if ( in_array( $name, $this->guarded ) ) {
459
-			return false;
460
-		}
461
-
462
-		// If fillable hasn't been defined, then everything else fillable.
463
-		return ! $this->fillable;
464
-	}
465
-
466
-	/**
467
-	 * Overrides the current WordPress object with a provided one.
468
-	 *
469
-	 * Resets the post's default values and stores it in the attributes.
470
-	 *
471
-	 * @param WP_Post|WP_Term|null $value
472
-	 *
473
-	 * @return $this
474
-	 */
475
-	private function override_wp_object( $value ) {
476
-		if ( is_object( $value ) ) {
477
-			$this->attributes[ self::OBJECT_KEY ] = $this->set_wp_object_constants( $value );
478
-		} else {
479
-			$this->attributes[ self::OBJECT_KEY ] = null;
480
-
481
-			if ( $this->uses_wp_object() ) {
482
-				$this->create_wp_object();
483
-			}
484
-		}
485
-
486
-		return $this;
487
-	}
488
-
489
-	/**
490
-	 * Overrides the current table attributes array with a provided one.
491
-	 *
492
-	 * @param array $value
493
-	 *
494
-	 * @return $this
495
-	 */
496
-	private function override_table( array $value ) {
497
-		$this->attributes[ self::TABLE_KEY ] = $value;
498
-
499
-		return $this;
500
-	}
501
-
502
-	/**
503
-	 * Create and set with a new blank post.
504
-	 *
505
-	 * Creates a new WP_Post object, assigns it the default attributes,
506
-	 * and stores it in the attributes.
507
-	 *
508
-	 * @throws LogicException
509
-	 */
510
-	private function create_wp_object() {
511
-		switch ( true ) {
512
-			case $this instanceof UsesWordPressPost:
513
-				$object = new WP_Post( (object) array() );
514
-				break;
515
-			case $this instanceof UsesWordPressTerm:
516
-				$object = new WP_Term( (object) array() );
517
-				break;
518
-			default:
519
-				throw new LogicException;
520
-				break;
521
-		}
522
-
523
-		$this->attributes[ self::OBJECT_KEY ] = $this->set_wp_object_constants( $object );
524
-	}
525
-
526
-	/**
527
-	 * Enforces values on the post that can't change.
528
-	 *
529
-	 * Primarily, this is used to make sure the post_type always maps
530
-	 * to the model's "$type" property, but this can all be overridden
531
-	 * by the developer to enforce other values in the model.
532
-	 *
533
-	 * @param object $object
534
-	 *
535
-	 * @return object
536
-	 */
537
-	protected function set_wp_object_constants( $object ) {
538
-		if ( $this instanceof UsesWordPressPost ) {
539
-			$object->post_type = static::get_post_type();
540
-		}
541
-
542
-		if ( $this instanceof UsesWordPressTerm ) {
543
-			$object->taxonomy = static::get_taxonomy();
544
-		}
545
-
546
-		return $object;
547
-	}
548
-
549
-	/**
550
-	 * Magic __get method.
551
-	 *
552
-	 * Passes the name and value to get_attribute, which is where the magic happens.
553
-	 *
554
-	 * @param string $name
555
-	 *
556
-	 * @return mixed
557
-	 */
558
-	public function __get( $name ) {
559
-		return $this->get_attribute( $name );
560
-	}
561
-
562
-	/**
563
-	 * Retrieves the model attribute.
564
-	 *
565
-	 * @param string $name
566
-	 *
567
-	 * @return mixed
568
-	 *
569
-	 * @throws PropertyDoesNotExistException If property isn't found.
570
-	 */
571
-	public function get_attribute( $name ) {
572
-		if ( $method = $this->has_map_method( $name ) ) {
573
-			return $this->attributes[ self::OBJECT_KEY ]->{$this->{$method}()};
574
-		}
575
-
576
-		if ( $method = $this->has_compute_method( $name ) ) {
577
-			return $this->{$method}();
578
-		}
579
-
580
-		if ( isset( $this->attributes[ self::TABLE_KEY ][ $name ] ) ) {
581
-			return $this->attributes[ self::TABLE_KEY ][ $name ];
582
-		}
583
-
584
-		if ( isset( $this->defaults[ $name ] ) ) {
585
-			return $this->defaults[ $name ];
586
-		}
587
-
588
-		throw new PropertyDoesNotExistException( $name );
589
-	}
590
-
591
-	/**
592
-	 * Retrieve the model's original attribute value.
593
-	 *
594
-	 * @param string $name
595
-	 *
596
-	 * @return mixed
597
-	 *
598
-	 * @throws PropertyDoesNotExistException If property isn't found.
599
-	 */
600
-	public function get_original_attribute( $name ) {
601
-		$original_attributes = $this->original;
602
-
603
-		if ( ! is_object( $original_attributes[ static::OBJECT_KEY ] ) ) {
604
-			unset( $original_attributes[ static::OBJECT_KEY ] );
605
-		}
606
-
607
-		$original = new static( $original_attributes );
608
-
609
-		try {
610
-			return $original->get_attribute( $name );
611
-		} catch ( Exception $exception ) {
612
-			return null;
613
-		}
614
-	}
615
-
616
-	/**
617
-	 * Fetches the Model's primary ID, depending on the model
618
-	 * implementation.
619
-	 *
620
-	 * @return int
621
-	 *
622
-	 * @throws LogicException
623
-	 */
624
-	public function get_primary_id() {
625
-		if ( $this instanceof UsesWordPressPost ) {
626
-			return $this->get_underlying_wp_object()->ID;
627
-		}
628
-
629
-		if ( $this instanceof UsesWordPressTerm ) {
630
-			return $this->get_underlying_wp_object()->term_id;
631
-		}
632
-
633
-		// Model w/o wp_object not yet supported.
634
-		throw new LogicException;
635
-	}
636
-
637
-	/**
638
-	 * Checks whether the attribute has a map method.
639
-	 *
640
-	 * This is used to determine whether the attribute maps to a
641
-	 * property on the underlying WP_Post object. Returns the
642
-	 * method if one exists, returns false if it doesn't.
643
-	 *
644
-	 * @param string $name
645
-	 *
646
-	 * @return false|string
647
-	 */
648
-	protected function has_map_method( $name ) {
649
-		if ( method_exists( $this, $method = "map_{$name}" ) ) {
650
-			return $method;
651
-		}
652
-
653
-		return false;
654
-	}
655
-
656
-	/**
657
-	 * Checks whether the attribute has a compute method.
658
-	 *
659
-	 * This is used to determine if the attribute should be computed
660
-	 * from other attributes.
661
-	 *
662
-	 * @param string $name
663
-	 *
664
-	 * @return false|string
665
-	 */
666
-	protected function has_compute_method( $name ) {
667
-		if ( method_exists( $this, $method = "compute_{$name}" ) ) {
668
-			return $method;
669
-		}
670
-
671
-		return false;
672
-	}
673
-
674
-	/**
675
-	 * Clears all the current attributes from the model.
676
-	 *
677
-	 * This does not touch the model's original attributes, and will
678
-	 * only clear fillable attributes, unless the model is unguarded.
679
-	 *
680
-	 * @return $this
681
-	 */
682
-	public function clear() {
683
-		$keys = array_merge(
684
-			$this->get_table_keys(),
685
-			$this->get_wp_object_keys()
686
-		);
687
-
688
-		foreach ( $keys as $key ) {
689
-			try {
690
-				$this->set_attribute( $key, null );
691
-			} catch ( GuardedPropertyException $e ) {
692
-				// We won't clear out guarded attributes.
693
-			}
694
-		}
695
-
696
-		return $this;
697
-	}
698
-
699
-	/**
700
-	 * Unguards the model.
701
-	 *
702
-	 * Sets the model to be unguarded, allowing the filling of
703
-	 * guarded attributes.
704
-	 */
705
-	public function unguard() {
706
-		$this->is_guarded = false;
707
-	}
708
-
709
-	/**
710
-	 * Reguards the model.
711
-	 *
712
-	 * Sets the model to be guarded, preventing filling of
713
-	 * guarded attributes.
714
-	 */
715
-	public function reguard() {
716
-		$this->is_guarded = true;
717
-	}
718
-
719
-	/**
720
-	 * Retrieves all the compute methods on the model.
721
-	 *
722
-	 * @return array
723
-	 */
724
-	protected function get_compute_methods() {
725
-		$methods = get_class_methods( get_called_class() );
726
-		$methods = array_filter( $methods, function ( $method ) {
727
-			return strrpos( $method, 'compute_', - strlen( $method ) ) !== false;
728
-		} );
729
-		$methods = array_map( function ( $method ) {
730
-			return substr( $method, strlen( 'compute_' ) );
731
-		}, $methods );
732
-
733
-		return $methods;
734
-	}
735
-
736
-	/**
737
-	 * Sets up the memo array for the creating model.
738
-	 */
739
-	private function maybe_boot() {
740
-		if ( ! isset( self::$memo[ get_called_class() ] ) ) {
741
-			self::$memo[ get_called_class() ] = array();
742
-		}
743
-	}
744
-
745
-	/**
746
-	 * Whether this Model uses an underlying WordPress object.
747
-	 *
748
-	 * @return bool
749
-	 */
750
-	protected function uses_wp_object() {
751
-		return $this instanceof UsesWordPressPost ||
752
-			$this instanceof UsesWordPressTerm;
753
-	}
24
+    /**
25
+     * Table attribute key.
26
+     */
27
+    const TABLE_KEY = '@@table';
28
+
29
+    /**
30
+     * Object attribute key.
31
+     */
32
+    const OBJECT_KEY = '@@object';
33
+
34
+    /**
35
+     * Memoized values for class methods.
36
+     *
37
+     * @var array
38
+     */
39
+    private static $memo = array();
40
+
41
+    /**
42
+     * Model attributes.
43
+     *
44
+     * @var array
45
+     */
46
+    private $attributes = array(
47
+        self::TABLE_KEY  => array(),
48
+        self::OBJECT_KEY => null,
49
+    );
50
+
51
+    /**
52
+     * Model's original attributes.
53
+     *
54
+     * @var array
55
+     */
56
+    private $original = array(
57
+        self::TABLE_KEY  => array(),
58
+        self::OBJECT_KEY => null,
59
+    );
60
+
61
+    /**
62
+     * Default attribute values.
63
+     *
64
+     * @var array
65
+     */
66
+    protected $defaults = array();
67
+
68
+    /**
69
+     * Properties which are allowed to be set on the model.
70
+     *
71
+     * If this array is empty, any attributes can be set on the model.
72
+     *
73
+     * @var string[]
74
+     */
75
+    protected $fillable = array();
76
+
77
+    /**
78
+     * Properties which cannot be automatically filled on the model.
79
+     *
80
+     * If the model is unguarded, these properties can be filled.
81
+     *
82
+     * @var array
83
+     */
84
+    protected $guarded = array();
85
+
86
+    /**
87
+     * Properties which should not be serialized.
88
+     *
89
+     * @var array
90
+     */
91
+    protected $hidden = array();
92
+
93
+    /**
94
+     * Properties which should be serialized.
95
+     *
96
+     * @var array
97
+     */
98
+    protected $visible = array();
99
+
100
+    /**
101
+     * Whether the model's properties are guarded.
102
+     *
103
+     * When false, allows guarded properties to be filled.
104
+     *
105
+     * @var bool
106
+     */
107
+    protected $is_guarded = true;
108
+
109
+    /**
110
+     * Constructs a new model with provided attributes.
111
+     *
112
+     * If self::OBJECT_KEY is passed as one of the attributes, the underlying post
113
+     * will be overwritten.
114
+     *
115
+     * @param array <string, mixed> $attributes
116
+     */
117
+    public function __construct( array $attributes = array() ) {
118
+        $this->maybe_boot();
119
+        $this->sync_original();
120
+
121
+        if ( $this->uses_wp_object() ) {
122
+            $this->create_wp_object();
123
+        }
124
+
125
+        $this->unguard();
126
+        $this->refresh( $attributes );
127
+        $this->reguard();
128
+    }
129
+
130
+    /**
131
+     * Refreshes the model's current attributes with the provided array.
132
+     *
133
+     * The model's attributes will match what was provided in the array,
134
+     * and any attributes not passed
135
+     *
136
+     * @param array $attributes
137
+     *
138
+     * @return $this
139
+     */
140
+    public function refresh( array $attributes ) {
141
+        $this->clear();
142
+
143
+        return $this->merge( $attributes );
144
+    }
145
+
146
+    /**
147
+     * Merges the provided attributes with the provided array.
148
+     *
149
+     * @param array $attributes
150
+     *
151
+     * @return $this
152
+     */
153
+    public function merge( array $attributes ) {
154
+        foreach ( $attributes as $name => $value ) {
155
+            $this->set_attribute( $name, $value );
156
+        }
157
+
158
+        return $this;
159
+    }
160
+
161
+    /**
162
+     * Get the model's table attributes.
163
+     *
164
+     * Returns the array of for the model that will either need to be
165
+     * saved in postmeta or a separate table.
166
+     *
167
+     * @return array
168
+     */
169
+    public function get_table_attributes() {
170
+        return $this->attributes[ self::TABLE_KEY ];
171
+    }
172
+
173
+    /**
174
+     * Get the model's original attributes.
175
+     *
176
+     * @return array
177
+     */
178
+    public function get_original_table_attributes() {
179
+        return $this->original[ self::TABLE_KEY ];
180
+    }
181
+
182
+    /**
183
+     * Retrieve an array of the attributes on the model
184
+     * that have changed compared to the model's
185
+     * original data.
186
+     *
187
+     * @return array
188
+     */
189
+    public function get_changed_table_attributes() {
190
+        $changed = array();
191
+
192
+        foreach ( $this->get_table_attributes() as $key => $value ) {
193
+            if ( $value !==
194
+                    $this->get_original_attribute( $key )
195
+            ) {
196
+                $changed[ $key ] = $value;
197
+            }
198
+        }
199
+
200
+        return $changed;
201
+    }
202
+
203
+    /**
204
+     * Get the model's underlying post.
205
+     *
206
+     * Returns the underlying WP_Post object for the model, representing
207
+     * the data that will be save in the wp_posts table.
208
+     *
209
+     * @return false|WP_Post|WP_Term
210
+     */
211
+    public function get_underlying_wp_object() {
212
+        if ( isset( $this->attributes[ self::OBJECT_KEY ] ) ) {
213
+            return $this->attributes[ self::OBJECT_KEY ];
214
+        }
215
+
216
+        return false;
217
+    }
218
+
219
+    /**
220
+     * Get the model's original underlying post.
221
+     *
222
+     * @return WP_Post
223
+     */
224
+    public function get_original_underlying_wp_object() {
225
+        return $this->original[ self::OBJECT_KEY ];
226
+    }
227
+
228
+    /**
229
+     * Get the model attributes on the WordPress object
230
+     * that have changed compared to the model's
231
+     * original attributes.
232
+     *
233
+     * @return array
234
+     */
235
+    public function get_changed_wp_object_attributes() {
236
+        $changed = array();
237
+
238
+        foreach ( $this->get_wp_object_keys() as $key ) {
239
+            if ( $this->get_attribute( $key ) !==
240
+                    $this->get_original_attribute( $key )
241
+            ) {
242
+                $changed[ $key ] = $this->get_attribute( $key );
243
+            }
244
+        }
245
+
246
+        return $changed;
247
+    }
248
+
249
+    /**
250
+     * Magic __set method.
251
+     *
252
+     * Passes the name and value to set_attribute, which is where the magic happens.
253
+     *
254
+     * @param string $name
255
+     * @param mixed  $value
256
+     */
257
+    public function __set( $name, $value ) {
258
+        $this->set_attribute( $name, $value );
259
+    }
260
+
261
+    /**
262
+     * Sets the model attributes.
263
+     *
264
+     * Checks whether the model attribute can be set, check if it
265
+     * maps to the WP_Post property, otherwise, assigns it to the
266
+     * table attribute array.
267
+     *
268
+     * @param string $name
269
+     * @param mixed  $value
270
+     *
271
+     * @return $this
272
+     *
273
+     * @throws GuardedPropertyException
274
+     */
275
+    public function set_attribute( $name, $value ) {
276
+        if ( self::OBJECT_KEY === $name ) {
277
+            return $this->override_wp_object( $value );
278
+        }
279
+
280
+        if ( self::TABLE_KEY === $name ) {
281
+            return $this->override_table( $value );
282
+        }
283
+
284
+        if ( ! $this->is_fillable( $name ) ) {
285
+            throw new GuardedPropertyException;
286
+        }
287
+
288
+        if ( $method = $this->has_map_method( $name ) ) {
289
+            $this->attributes[ self::OBJECT_KEY ]->{$this->{$method}()} = $value;
290
+        } else {
291
+            $this->attributes[ self::TABLE_KEY ][ $name ] = $value;
292
+        }
293
+
294
+        return $this;
295
+    }
296
+
297
+    /**
298
+     * Retrieves all the attribute keys for the model.
299
+     *
300
+     * @return array
301
+     */
302
+    public function get_attribute_keys() {
303
+        if ( isset( self::$memo[ get_called_class() ][ __METHOD__ ] ) ) {
304
+            return self::$memo[ get_called_class() ][ __METHOD__ ];
305
+        }
306
+
307
+        return self::$memo[ get_called_class() ][ __METHOD__ ]
308
+            = array_merge(
309
+                $this->fillable,
310
+                $this->guarded,
311
+                $this->get_compute_methods()
312
+            );
313
+    }
314
+
315
+    /**
316
+     * Retrieves the attribute keys that aren't mapped to a post.
317
+     *
318
+     * @return array
319
+     */
320
+    public function get_table_keys() {
321
+        if ( isset( self::$memo[ get_called_class() ][ __METHOD__ ] ) ) {
322
+            return self::$memo[ get_called_class() ][ __METHOD__ ];
323
+        }
324
+
325
+        $keys = array();
326
+
327
+        foreach ( $this->get_attribute_keys() as $key ) {
328
+            if ( ! $this->has_map_method( $key ) &&
329
+                 ! $this->has_compute_method( $key )
330
+            ) {
331
+                $keys[] = $key;
332
+            }
333
+        }
334
+
335
+        return self::$memo[ get_called_class() ][ __METHOD__ ] = $keys;
336
+    }
337
+
338
+    /**
339
+     * Retrieves the attribute keys that are mapped to a post.
340
+     *
341
+     * @return array
342
+     */
343
+    public function get_wp_object_keys() {
344
+        if ( isset( self::$memo[ get_called_class() ][ __METHOD__ ] ) ) {
345
+            return self::$memo[ get_called_class() ][ __METHOD__ ];
346
+        }
347
+
348
+        $keys = array();
349
+
350
+        foreach ( $this->get_attribute_keys() as $key ) {
351
+            if ( $this->has_map_method( $key ) ) {
352
+                $keys[] = $key;
353
+            }
354
+        }
355
+
356
+        return self::$memo[ get_called_class() ][ __METHOD__ ] = $keys;
357
+    }
358
+
359
+    /**
360
+     * Returns the model's keys that are computed at call time.
361
+     *
362
+     * @return array
363
+     */
364
+    public function get_computed_keys() {
365
+        if ( isset( self::$memo[ get_called_class() ][ __METHOD__ ] ) ) {
366
+            return self::$memo[ get_called_class() ][ __METHOD__ ];
367
+        }
368
+
369
+        $keys = array();
370
+
371
+        foreach ( $this->get_attribute_keys() as $key ) {
372
+            if ( $this->has_compute_method( $key ) ) {
373
+                $keys[] = $key;
374
+            }
375
+        }
376
+
377
+        return self::$memo[ get_called_class() ][ __METHOD__ ] = $keys;
378
+    }
379
+
380
+    /**
381
+     * Serializes the model's public data into an array.
382
+     *
383
+     * @return array
384
+     */
385
+    public function serialize() {
386
+        $attributes = array();
387
+
388
+        if ( $this->visible ) {
389
+            // If visible attributes are set, we'll only reveal those.
390
+            foreach ( $this->visible as $key ) {
391
+                $attributes[ $key ] = $this->get_attribute( $key );
392
+            }
393
+        } elseif ( $this->hidden ) {
394
+            // If hidden attributes are set, we'll grab everything and hide those.
395
+            foreach ( $this->get_attribute_keys() as $key ) {
396
+                if ( ! in_array( $key, $this->hidden ) ) {
397
+                    $attributes[ $key ] = $this->get_attribute( $key );
398
+                }
399
+            }
400
+        } else {
401
+            // If nothing is hidden/visible, we'll grab and reveal everything.
402
+            foreach ( $this->get_attribute_keys() as $key ) {
403
+                $attributes[ $key ] = $this->get_attribute( $key );
404
+            }
405
+        }
406
+
407
+        return array_map( function ( $attribute ) {
408
+            if ( $attribute instanceof Serializes ) {
409
+                return $attribute->serialize();
410
+            }
411
+
412
+            return $attribute;
413
+        }, $attributes );
414
+    }
415
+
416
+    /**
417
+     * Syncs the current attributes to the model's original.
418
+     *
419
+     * @return $this
420
+     */
421
+    public function sync_original() {
422
+        $this->original = $this->attributes;
423
+
424
+        if ( $this->attributes[ self::OBJECT_KEY ] ) {
425
+            $this->original[ self::OBJECT_KEY ] = clone $this->attributes[ self::OBJECT_KEY ];
426
+        }
427
+
428
+        foreach ( $this->original[ self::TABLE_KEY ] as $key => $item ) {
429
+            if ( is_object( $item ) ) {
430
+                $this->original[ $key ] = clone $item;
431
+            }
432
+        }
433
+
434
+        return $this;
435
+    }
436
+
437
+    /**
438
+     * Checks if a given attribute is mass-fillable.
439
+     *
440
+     * Returns true if the attribute can be filled, false if it can't.
441
+     *
442
+     * @param string $name
443
+     *
444
+     * @return bool
445
+     */
446
+    private function is_fillable( $name ) {
447
+        // If this model isn't guarded, everything is fillable.
448
+        if ( ! $this->is_guarded ) {
449
+            return true;
450
+        }
451
+
452
+        // If it's in the fillable array, then it's fillable.
453
+        if ( in_array( $name, $this->fillable ) ) {
454
+            return true;
455
+        }
456
+
457
+        // If it's explicitly guarded, then it's not fillable.
458
+        if ( in_array( $name, $this->guarded ) ) {
459
+            return false;
460
+        }
461
+
462
+        // If fillable hasn't been defined, then everything else fillable.
463
+        return ! $this->fillable;
464
+    }
465
+
466
+    /**
467
+     * Overrides the current WordPress object with a provided one.
468
+     *
469
+     * Resets the post's default values and stores it in the attributes.
470
+     *
471
+     * @param WP_Post|WP_Term|null $value
472
+     *
473
+     * @return $this
474
+     */
475
+    private function override_wp_object( $value ) {
476
+        if ( is_object( $value ) ) {
477
+            $this->attributes[ self::OBJECT_KEY ] = $this->set_wp_object_constants( $value );
478
+        } else {
479
+            $this->attributes[ self::OBJECT_KEY ] = null;
480
+
481
+            if ( $this->uses_wp_object() ) {
482
+                $this->create_wp_object();
483
+            }
484
+        }
485
+
486
+        return $this;
487
+    }
488
+
489
+    /**
490
+     * Overrides the current table attributes array with a provided one.
491
+     *
492
+     * @param array $value
493
+     *
494
+     * @return $this
495
+     */
496
+    private function override_table( array $value ) {
497
+        $this->attributes[ self::TABLE_KEY ] = $value;
498
+
499
+        return $this;
500
+    }
501
+
502
+    /**
503
+     * Create and set with a new blank post.
504
+     *
505
+     * Creates a new WP_Post object, assigns it the default attributes,
506
+     * and stores it in the attributes.
507
+     *
508
+     * @throws LogicException
509
+     */
510
+    private function create_wp_object() {
511
+        switch ( true ) {
512
+            case $this instanceof UsesWordPressPost:
513
+                $object = new WP_Post( (object) array() );
514
+                break;
515
+            case $this instanceof UsesWordPressTerm:
516
+                $object = new WP_Term( (object) array() );
517
+                break;
518
+            default:
519
+                throw new LogicException;
520
+                break;
521
+        }
522
+
523
+        $this->attributes[ self::OBJECT_KEY ] = $this->set_wp_object_constants( $object );
524
+    }
525
+
526
+    /**
527
+     * Enforces values on the post that can't change.
528
+     *
529
+     * Primarily, this is used to make sure the post_type always maps
530
+     * to the model's "$type" property, but this can all be overridden
531
+     * by the developer to enforce other values in the model.
532
+     *
533
+     * @param object $object
534
+     *
535
+     * @return object
536
+     */
537
+    protected function set_wp_object_constants( $object ) {
538
+        if ( $this instanceof UsesWordPressPost ) {
539
+            $object->post_type = static::get_post_type();
540
+        }
541
+
542
+        if ( $this instanceof UsesWordPressTerm ) {
543
+            $object->taxonomy = static::get_taxonomy();
544
+        }
545
+
546
+        return $object;
547
+    }
548
+
549
+    /**
550
+     * Magic __get method.
551
+     *
552
+     * Passes the name and value to get_attribute, which is where the magic happens.
553
+     *
554
+     * @param string $name
555
+     *
556
+     * @return mixed
557
+     */
558
+    public function __get( $name ) {
559
+        return $this->get_attribute( $name );
560
+    }
561
+
562
+    /**
563
+     * Retrieves the model attribute.
564
+     *
565
+     * @param string $name
566
+     *
567
+     * @return mixed
568
+     *
569
+     * @throws PropertyDoesNotExistException If property isn't found.
570
+     */
571
+    public function get_attribute( $name ) {
572
+        if ( $method = $this->has_map_method( $name ) ) {
573
+            return $this->attributes[ self::OBJECT_KEY ]->{$this->{$method}()};
574
+        }
575
+
576
+        if ( $method = $this->has_compute_method( $name ) ) {
577
+            return $this->{$method}();
578
+        }
579
+
580
+        if ( isset( $this->attributes[ self::TABLE_KEY ][ $name ] ) ) {
581
+            return $this->attributes[ self::TABLE_KEY ][ $name ];
582
+        }
583
+
584
+        if ( isset( $this->defaults[ $name ] ) ) {
585
+            return $this->defaults[ $name ];
586
+        }
587
+
588
+        throw new PropertyDoesNotExistException( $name );
589
+    }
590
+
591
+    /**
592
+     * Retrieve the model's original attribute value.
593
+     *
594
+     * @param string $name
595
+     *
596
+     * @return mixed
597
+     *
598
+     * @throws PropertyDoesNotExistException If property isn't found.
599
+     */
600
+    public function get_original_attribute( $name ) {
601
+        $original_attributes = $this->original;
602
+
603
+        if ( ! is_object( $original_attributes[ static::OBJECT_KEY ] ) ) {
604
+            unset( $original_attributes[ static::OBJECT_KEY ] );
605
+        }
606
+
607
+        $original = new static( $original_attributes );
608
+
609
+        try {
610
+            return $original->get_attribute( $name );
611
+        } catch ( Exception $exception ) {
612
+            return null;
613
+        }
614
+    }
615
+
616
+    /**
617
+     * Fetches the Model's primary ID, depending on the model
618
+     * implementation.
619
+     *
620
+     * @return int
621
+     *
622
+     * @throws LogicException
623
+     */
624
+    public function get_primary_id() {
625
+        if ( $this instanceof UsesWordPressPost ) {
626
+            return $this->get_underlying_wp_object()->ID;
627
+        }
628
+
629
+        if ( $this instanceof UsesWordPressTerm ) {
630
+            return $this->get_underlying_wp_object()->term_id;
631
+        }
632
+
633
+        // Model w/o wp_object not yet supported.
634
+        throw new LogicException;
635
+    }
636
+
637
+    /**
638
+     * Checks whether the attribute has a map method.
639
+     *
640
+     * This is used to determine whether the attribute maps to a
641
+     * property on the underlying WP_Post object. Returns the
642
+     * method if one exists, returns false if it doesn't.
643
+     *
644
+     * @param string $name
645
+     *
646
+     * @return false|string
647
+     */
648
+    protected function has_map_method( $name ) {
649
+        if ( method_exists( $this, $method = "map_{$name}" ) ) {
650
+            return $method;
651
+        }
652
+
653
+        return false;
654
+    }
655
+
656
+    /**
657
+     * Checks whether the attribute has a compute method.
658
+     *
659
+     * This is used to determine if the attribute should be computed
660
+     * from other attributes.
661
+     *
662
+     * @param string $name
663
+     *
664
+     * @return false|string
665
+     */
666
+    protected function has_compute_method( $name ) {
667
+        if ( method_exists( $this, $method = "compute_{$name}" ) ) {
668
+            return $method;
669
+        }
670
+
671
+        return false;
672
+    }
673
+
674
+    /**
675
+     * Clears all the current attributes from the model.
676
+     *
677
+     * This does not touch the model's original attributes, and will
678
+     * only clear fillable attributes, unless the model is unguarded.
679
+     *
680
+     * @return $this
681
+     */
682
+    public function clear() {
683
+        $keys = array_merge(
684
+            $this->get_table_keys(),
685
+            $this->get_wp_object_keys()
686
+        );
687
+
688
+        foreach ( $keys as $key ) {
689
+            try {
690
+                $this->set_attribute( $key, null );
691
+            } catch ( GuardedPropertyException $e ) {
692
+                // We won't clear out guarded attributes.
693
+            }
694
+        }
695
+
696
+        return $this;
697
+    }
698
+
699
+    /**
700
+     * Unguards the model.
701
+     *
702
+     * Sets the model to be unguarded, allowing the filling of
703
+     * guarded attributes.
704
+     */
705
+    public function unguard() {
706
+        $this->is_guarded = false;
707
+    }
708
+
709
+    /**
710
+     * Reguards the model.
711
+     *
712
+     * Sets the model to be guarded, preventing filling of
713
+     * guarded attributes.
714
+     */
715
+    public function reguard() {
716
+        $this->is_guarded = true;
717
+    }
718
+
719
+    /**
720
+     * Retrieves all the compute methods on the model.
721
+     *
722
+     * @return array
723
+     */
724
+    protected function get_compute_methods() {
725
+        $methods = get_class_methods( get_called_class() );
726
+        $methods = array_filter( $methods, function ( $method ) {
727
+            return strrpos( $method, 'compute_', - strlen( $method ) ) !== false;
728
+        } );
729
+        $methods = array_map( function ( $method ) {
730
+            return substr( $method, strlen( 'compute_' ) );
731
+        }, $methods );
732
+
733
+        return $methods;
734
+    }
735
+
736
+    /**
737
+     * Sets up the memo array for the creating model.
738
+     */
739
+    private function maybe_boot() {
740
+        if ( ! isset( self::$memo[ get_called_class() ] ) ) {
741
+            self::$memo[ get_called_class() ] = array();
742
+        }
743
+    }
744
+
745
+    /**
746
+     * Whether this Model uses an underlying WordPress object.
747
+     *
748
+     * @return bool
749
+     */
750
+    protected function uses_wp_object() {
751
+        return $this instanceof UsesWordPressPost ||
752
+            $this instanceof UsesWordPressTerm;
753
+    }
754 754
 }
Please login to merge, or discard this patch.
Spacing   +121 added lines, -121 removed lines patch added patch discarded remove patch
@@ -114,16 +114,16 @@  discard block
 block discarded – undo
114 114
 	 *
115 115
 	 * @param array <string, mixed> $attributes
116 116
 	 */
117
-	public function __construct( array $attributes = array() ) {
117
+	public function __construct(array $attributes = array()) {
118 118
 		$this->maybe_boot();
119 119
 		$this->sync_original();
120 120
 
121
-		if ( $this->uses_wp_object() ) {
121
+		if ($this->uses_wp_object()) {
122 122
 			$this->create_wp_object();
123 123
 		}
124 124
 
125 125
 		$this->unguard();
126
-		$this->refresh( $attributes );
126
+		$this->refresh($attributes);
127 127
 		$this->reguard();
128 128
 	}
129 129
 
@@ -137,10 +137,10 @@  discard block
 block discarded – undo
137 137
 	 *
138 138
 	 * @return $this
139 139
 	 */
140
-	public function refresh( array $attributes ) {
140
+	public function refresh(array $attributes) {
141 141
 		$this->clear();
142 142
 
143
-		return $this->merge( $attributes );
143
+		return $this->merge($attributes);
144 144
 	}
145 145
 
146 146
 	/**
@@ -150,9 +150,9 @@  discard block
 block discarded – undo
150 150
 	 *
151 151
 	 * @return $this
152 152
 	 */
153
-	public function merge( array $attributes ) {
154
-		foreach ( $attributes as $name => $value ) {
155
-			$this->set_attribute( $name, $value );
153
+	public function merge(array $attributes) {
154
+		foreach ($attributes as $name => $value) {
155
+			$this->set_attribute($name, $value);
156 156
 		}
157 157
 
158 158
 		return $this;
@@ -167,7 +167,7 @@  discard block
 block discarded – undo
167 167
 	 * @return array
168 168
 	 */
169 169
 	public function get_table_attributes() {
170
-		return $this->attributes[ self::TABLE_KEY ];
170
+		return $this->attributes[self::TABLE_KEY];
171 171
 	}
172 172
 
173 173
 	/**
@@ -176,7 +176,7 @@  discard block
 block discarded – undo
176 176
 	 * @return array
177 177
 	 */
178 178
 	public function get_original_table_attributes() {
179
-		return $this->original[ self::TABLE_KEY ];
179
+		return $this->original[self::TABLE_KEY];
180 180
 	}
181 181
 
182 182
 	/**
@@ -189,11 +189,11 @@  discard block
 block discarded – undo
189 189
 	public function get_changed_table_attributes() {
190 190
 		$changed = array();
191 191
 
192
-		foreach ( $this->get_table_attributes() as $key => $value ) {
193
-			if ( $value !==
194
-			     $this->get_original_attribute( $key )
192
+		foreach ($this->get_table_attributes() as $key => $value) {
193
+			if ($value !==
194
+			     $this->get_original_attribute($key)
195 195
 			) {
196
-				$changed[ $key ] = $value;
196
+				$changed[$key] = $value;
197 197
 			}
198 198
 		}
199 199
 
@@ -209,8 +209,8 @@  discard block
 block discarded – undo
209 209
 	 * @return false|WP_Post|WP_Term
210 210
 	 */
211 211
 	public function get_underlying_wp_object() {
212
-		if ( isset( $this->attributes[ self::OBJECT_KEY ] ) ) {
213
-			return $this->attributes[ self::OBJECT_KEY ];
212
+		if (isset($this->attributes[self::OBJECT_KEY])) {
213
+			return $this->attributes[self::OBJECT_KEY];
214 214
 		}
215 215
 
216 216
 		return false;
@@ -222,7 +222,7 @@  discard block
 block discarded – undo
222 222
 	 * @return WP_Post
223 223
 	 */
224 224
 	public function get_original_underlying_wp_object() {
225
-		return $this->original[ self::OBJECT_KEY ];
225
+		return $this->original[self::OBJECT_KEY];
226 226
 	}
227 227
 
228 228
 	/**
@@ -235,11 +235,11 @@  discard block
 block discarded – undo
235 235
 	public function get_changed_wp_object_attributes() {
236 236
 		$changed = array();
237 237
 
238
-		foreach ( $this->get_wp_object_keys() as $key ) {
239
-			if ( $this->get_attribute( $key ) !==
240
-			     $this->get_original_attribute( $key )
238
+		foreach ($this->get_wp_object_keys() as $key) {
239
+			if ($this->get_attribute($key) !==
240
+			     $this->get_original_attribute($key)
241 241
 			) {
242
-				$changed[ $key ] = $this->get_attribute( $key );
242
+				$changed[$key] = $this->get_attribute($key);
243 243
 			}
244 244
 		}
245 245
 
@@ -254,8 +254,8 @@  discard block
 block discarded – undo
254 254
 	 * @param string $name
255 255
 	 * @param mixed  $value
256 256
 	 */
257
-	public function __set( $name, $value ) {
258
-		$this->set_attribute( $name, $value );
257
+	public function __set($name, $value) {
258
+		$this->set_attribute($name, $value);
259 259
 	}
260 260
 
261 261
 	/**
@@ -272,23 +272,23 @@  discard block
 block discarded – undo
272 272
 	 *
273 273
 	 * @throws GuardedPropertyException
274 274
 	 */
275
-	public function set_attribute( $name, $value ) {
276
-		if ( self::OBJECT_KEY === $name ) {
277
-			return $this->override_wp_object( $value );
275
+	public function set_attribute($name, $value) {
276
+		if (self::OBJECT_KEY === $name) {
277
+			return $this->override_wp_object($value);
278 278
 		}
279 279
 
280
-		if ( self::TABLE_KEY === $name ) {
281
-			return $this->override_table( $value );
280
+		if (self::TABLE_KEY === $name) {
281
+			return $this->override_table($value);
282 282
 		}
283 283
 
284
-		if ( ! $this->is_fillable( $name ) ) {
284
+		if (!$this->is_fillable($name)) {
285 285
 			throw new GuardedPropertyException;
286 286
 		}
287 287
 
288
-		if ( $method = $this->has_map_method( $name ) ) {
289
-			$this->attributes[ self::OBJECT_KEY ]->{$this->{$method}()} = $value;
288
+		if ($method = $this->has_map_method($name)) {
289
+			$this->attributes[self::OBJECT_KEY]->{$this->{$method}()} = $value;
290 290
 		} else {
291
-			$this->attributes[ self::TABLE_KEY ][ $name ] = $value;
291
+			$this->attributes[self::TABLE_KEY][$name] = $value;
292 292
 		}
293 293
 
294 294
 		return $this;
@@ -300,11 +300,11 @@  discard block
 block discarded – undo
300 300
 	 * @return array
301 301
 	 */
302 302
 	public function get_attribute_keys() {
303
-		if ( isset( self::$memo[ get_called_class() ][ __METHOD__ ] ) ) {
304
-			return self::$memo[ get_called_class() ][ __METHOD__ ];
303
+		if (isset(self::$memo[get_called_class()][__METHOD__])) {
304
+			return self::$memo[get_called_class()][__METHOD__];
305 305
 		}
306 306
 
307
-		return self::$memo[ get_called_class() ][ __METHOD__ ]
307
+		return self::$memo[get_called_class()][__METHOD__]
308 308
 			= array_merge(
309 309
 				$this->fillable,
310 310
 				$this->guarded,
@@ -318,21 +318,21 @@  discard block
 block discarded – undo
318 318
 	 * @return array
319 319
 	 */
320 320
 	public function get_table_keys() {
321
-		if ( isset( self::$memo[ get_called_class() ][ __METHOD__ ] ) ) {
322
-			return self::$memo[ get_called_class() ][ __METHOD__ ];
321
+		if (isset(self::$memo[get_called_class()][__METHOD__])) {
322
+			return self::$memo[get_called_class()][__METHOD__];
323 323
 		}
324 324
 
325 325
 		$keys = array();
326 326
 
327
-		foreach ( $this->get_attribute_keys() as $key ) {
328
-			if ( ! $this->has_map_method( $key ) &&
329
-			     ! $this->has_compute_method( $key )
327
+		foreach ($this->get_attribute_keys() as $key) {
328
+			if (!$this->has_map_method($key) &&
329
+			     !$this->has_compute_method($key)
330 330
 			) {
331 331
 				$keys[] = $key;
332 332
 			}
333 333
 		}
334 334
 
335
-		return self::$memo[ get_called_class() ][ __METHOD__ ] = $keys;
335
+		return self::$memo[get_called_class()][__METHOD__] = $keys;
336 336
 	}
337 337
 
338 338
 	/**
@@ -341,19 +341,19 @@  discard block
 block discarded – undo
341 341
 	 * @return array
342 342
 	 */
343 343
 	public function get_wp_object_keys() {
344
-		if ( isset( self::$memo[ get_called_class() ][ __METHOD__ ] ) ) {
345
-			return self::$memo[ get_called_class() ][ __METHOD__ ];
344
+		if (isset(self::$memo[get_called_class()][__METHOD__])) {
345
+			return self::$memo[get_called_class()][__METHOD__];
346 346
 		}
347 347
 
348 348
 		$keys = array();
349 349
 
350
-		foreach ( $this->get_attribute_keys() as $key ) {
351
-			if ( $this->has_map_method( $key ) ) {
350
+		foreach ($this->get_attribute_keys() as $key) {
351
+			if ($this->has_map_method($key)) {
352 352
 				$keys[] = $key;
353 353
 			}
354 354
 		}
355 355
 
356
-		return self::$memo[ get_called_class() ][ __METHOD__ ] = $keys;
356
+		return self::$memo[get_called_class()][__METHOD__] = $keys;
357 357
 	}
358 358
 
359 359
 	/**
@@ -362,19 +362,19 @@  discard block
 block discarded – undo
362 362
 	 * @return array
363 363
 	 */
364 364
 	public function get_computed_keys() {
365
-		if ( isset( self::$memo[ get_called_class() ][ __METHOD__ ] ) ) {
366
-			return self::$memo[ get_called_class() ][ __METHOD__ ];
365
+		if (isset(self::$memo[get_called_class()][__METHOD__])) {
366
+			return self::$memo[get_called_class()][__METHOD__];
367 367
 		}
368 368
 
369 369
 		$keys = array();
370 370
 
371
-		foreach ( $this->get_attribute_keys() as $key ) {
372
-			if ( $this->has_compute_method( $key ) ) {
371
+		foreach ($this->get_attribute_keys() as $key) {
372
+			if ($this->has_compute_method($key)) {
373 373
 				$keys[] = $key;
374 374
 			}
375 375
 		}
376 376
 
377
-		return self::$memo[ get_called_class() ][ __METHOD__ ] = $keys;
377
+		return self::$memo[get_called_class()][__METHOD__] = $keys;
378 378
 	}
379 379
 
380 380
 	/**
@@ -385,32 +385,32 @@  discard block
 block discarded – undo
385 385
 	public function serialize() {
386 386
 		$attributes = array();
387 387
 
388
-		if ( $this->visible ) {
388
+		if ($this->visible) {
389 389
 			// If visible attributes are set, we'll only reveal those.
390
-			foreach ( $this->visible as $key ) {
391
-				$attributes[ $key ] = $this->get_attribute( $key );
390
+			foreach ($this->visible as $key) {
391
+				$attributes[$key] = $this->get_attribute($key);
392 392
 			}
393
-		} elseif ( $this->hidden ) {
393
+		} elseif ($this->hidden) {
394 394
 			// If hidden attributes are set, we'll grab everything and hide those.
395
-			foreach ( $this->get_attribute_keys() as $key ) {
396
-				if ( ! in_array( $key, $this->hidden ) ) {
397
-					$attributes[ $key ] = $this->get_attribute( $key );
395
+			foreach ($this->get_attribute_keys() as $key) {
396
+				if (!in_array($key, $this->hidden)) {
397
+					$attributes[$key] = $this->get_attribute($key);
398 398
 				}
399 399
 			}
400 400
 		} else {
401 401
 			// If nothing is hidden/visible, we'll grab and reveal everything.
402
-			foreach ( $this->get_attribute_keys() as $key ) {
403
-				$attributes[ $key ] = $this->get_attribute( $key );
402
+			foreach ($this->get_attribute_keys() as $key) {
403
+				$attributes[$key] = $this->get_attribute($key);
404 404
 			}
405 405
 		}
406 406
 
407
-		return array_map( function ( $attribute ) {
408
-			if ( $attribute instanceof Serializes ) {
407
+		return array_map(function($attribute) {
408
+			if ($attribute instanceof Serializes) {
409 409
 				return $attribute->serialize();
410 410
 			}
411 411
 
412 412
 			return $attribute;
413
-		}, $attributes );
413
+		}, $attributes);
414 414
 	}
415 415
 
416 416
 	/**
@@ -421,13 +421,13 @@  discard block
 block discarded – undo
421 421
 	public function sync_original() {
422 422
 		$this->original = $this->attributes;
423 423
 
424
-		if ( $this->attributes[ self::OBJECT_KEY ] ) {
425
-			$this->original[ self::OBJECT_KEY ] = clone $this->attributes[ self::OBJECT_KEY ];
424
+		if ($this->attributes[self::OBJECT_KEY]) {
425
+			$this->original[self::OBJECT_KEY] = clone $this->attributes[self::OBJECT_KEY];
426 426
 		}
427 427
 
428
-		foreach ( $this->original[ self::TABLE_KEY ] as $key => $item ) {
429
-			if ( is_object( $item ) ) {
430
-				$this->original[ $key ] = clone $item;
428
+		foreach ($this->original[self::TABLE_KEY] as $key => $item) {
429
+			if (is_object($item)) {
430
+				$this->original[$key] = clone $item;
431 431
 			}
432 432
 		}
433 433
 
@@ -443,24 +443,24 @@  discard block
 block discarded – undo
443 443
 	 *
444 444
 	 * @return bool
445 445
 	 */
446
-	private function is_fillable( $name ) {
446
+	private function is_fillable($name) {
447 447
 		// If this model isn't guarded, everything is fillable.
448
-		if ( ! $this->is_guarded ) {
448
+		if (!$this->is_guarded) {
449 449
 			return true;
450 450
 		}
451 451
 
452 452
 		// If it's in the fillable array, then it's fillable.
453
-		if ( in_array( $name, $this->fillable ) ) {
453
+		if (in_array($name, $this->fillable)) {
454 454
 			return true;
455 455
 		}
456 456
 
457 457
 		// If it's explicitly guarded, then it's not fillable.
458
-		if ( in_array( $name, $this->guarded ) ) {
458
+		if (in_array($name, $this->guarded)) {
459 459
 			return false;
460 460
 		}
461 461
 
462 462
 		// If fillable hasn't been defined, then everything else fillable.
463
-		return ! $this->fillable;
463
+		return !$this->fillable;
464 464
 	}
465 465
 
466 466
 	/**
@@ -472,13 +472,13 @@  discard block
 block discarded – undo
472 472
 	 *
473 473
 	 * @return $this
474 474
 	 */
475
-	private function override_wp_object( $value ) {
476
-		if ( is_object( $value ) ) {
477
-			$this->attributes[ self::OBJECT_KEY ] = $this->set_wp_object_constants( $value );
475
+	private function override_wp_object($value) {
476
+		if (is_object($value)) {
477
+			$this->attributes[self::OBJECT_KEY] = $this->set_wp_object_constants($value);
478 478
 		} else {
479
-			$this->attributes[ self::OBJECT_KEY ] = null;
479
+			$this->attributes[self::OBJECT_KEY] = null;
480 480
 
481
-			if ( $this->uses_wp_object() ) {
481
+			if ($this->uses_wp_object()) {
482 482
 				$this->create_wp_object();
483 483
 			}
484 484
 		}
@@ -493,8 +493,8 @@  discard block
 block discarded – undo
493 493
 	 *
494 494
 	 * @return $this
495 495
 	 */
496
-	private function override_table( array $value ) {
497
-		$this->attributes[ self::TABLE_KEY ] = $value;
496
+	private function override_table(array $value) {
497
+		$this->attributes[self::TABLE_KEY] = $value;
498 498
 
499 499
 		return $this;
500 500
 	}
@@ -508,19 +508,19 @@  discard block
 block discarded – undo
508 508
 	 * @throws LogicException
509 509
 	 */
510 510
 	private function create_wp_object() {
511
-		switch ( true ) {
511
+		switch (true) {
512 512
 			case $this instanceof UsesWordPressPost:
513
-				$object = new WP_Post( (object) array() );
513
+				$object = new WP_Post((object) array());
514 514
 				break;
515 515
 			case $this instanceof UsesWordPressTerm:
516
-				$object = new WP_Term( (object) array() );
516
+				$object = new WP_Term((object) array());
517 517
 				break;
518 518
 			default:
519 519
 				throw new LogicException;
520 520
 				break;
521 521
 		}
522 522
 
523
-		$this->attributes[ self::OBJECT_KEY ] = $this->set_wp_object_constants( $object );
523
+		$this->attributes[self::OBJECT_KEY] = $this->set_wp_object_constants($object);
524 524
 	}
525 525
 
526 526
 	/**
@@ -534,12 +534,12 @@  discard block
 block discarded – undo
534 534
 	 *
535 535
 	 * @return object
536 536
 	 */
537
-	protected function set_wp_object_constants( $object ) {
538
-		if ( $this instanceof UsesWordPressPost ) {
537
+	protected function set_wp_object_constants($object) {
538
+		if ($this instanceof UsesWordPressPost) {
539 539
 			$object->post_type = static::get_post_type();
540 540
 		}
541 541
 
542
-		if ( $this instanceof UsesWordPressTerm ) {
542
+		if ($this instanceof UsesWordPressTerm) {
543 543
 			$object->taxonomy = static::get_taxonomy();
544 544
 		}
545 545
 
@@ -555,8 +555,8 @@  discard block
 block discarded – undo
555 555
 	 *
556 556
 	 * @return mixed
557 557
 	 */
558
-	public function __get( $name ) {
559
-		return $this->get_attribute( $name );
558
+	public function __get($name) {
559
+		return $this->get_attribute($name);
560 560
 	}
561 561
 
562 562
 	/**
@@ -568,24 +568,24 @@  discard block
 block discarded – undo
568 568
 	 *
569 569
 	 * @throws PropertyDoesNotExistException If property isn't found.
570 570
 	 */
571
-	public function get_attribute( $name ) {
572
-		if ( $method = $this->has_map_method( $name ) ) {
573
-			return $this->attributes[ self::OBJECT_KEY ]->{$this->{$method}()};
571
+	public function get_attribute($name) {
572
+		if ($method = $this->has_map_method($name)) {
573
+			return $this->attributes[self::OBJECT_KEY]->{$this->{$method}()};
574 574
 		}
575 575
 
576
-		if ( $method = $this->has_compute_method( $name ) ) {
576
+		if ($method = $this->has_compute_method($name)) {
577 577
 			return $this->{$method}();
578 578
 		}
579 579
 
580
-		if ( isset( $this->attributes[ self::TABLE_KEY ][ $name ] ) ) {
581
-			return $this->attributes[ self::TABLE_KEY ][ $name ];
580
+		if (isset($this->attributes[self::TABLE_KEY][$name])) {
581
+			return $this->attributes[self::TABLE_KEY][$name];
582 582
 		}
583 583
 
584
-		if ( isset( $this->defaults[ $name ] ) ) {
585
-			return $this->defaults[ $name ];
584
+		if (isset($this->defaults[$name])) {
585
+			return $this->defaults[$name];
586 586
 		}
587 587
 
588
-		throw new PropertyDoesNotExistException( $name );
588
+		throw new PropertyDoesNotExistException($name);
589 589
 	}
590 590
 
591 591
 	/**
@@ -597,18 +597,18 @@  discard block
 block discarded – undo
597 597
 	 *
598 598
 	 * @throws PropertyDoesNotExistException If property isn't found.
599 599
 	 */
600
-	public function get_original_attribute( $name ) {
600
+	public function get_original_attribute($name) {
601 601
 		$original_attributes = $this->original;
602 602
 
603
-		if ( ! is_object( $original_attributes[ static::OBJECT_KEY ] ) ) {
604
-			unset( $original_attributes[ static::OBJECT_KEY ] );
603
+		if (!is_object($original_attributes[static::OBJECT_KEY])) {
604
+			unset($original_attributes[static::OBJECT_KEY]);
605 605
 		}
606 606
 
607
-		$original = new static( $original_attributes );
607
+		$original = new static($original_attributes);
608 608
 
609 609
 		try {
610
-			return $original->get_attribute( $name );
611
-		} catch ( Exception $exception ) {
610
+			return $original->get_attribute($name);
611
+		} catch (Exception $exception) {
612 612
 			return null;
613 613
 		}
614 614
 	}
@@ -622,11 +622,11 @@  discard block
 block discarded – undo
622 622
 	 * @throws LogicException
623 623
 	 */
624 624
 	public function get_primary_id() {
625
-		if ( $this instanceof UsesWordPressPost ) {
625
+		if ($this instanceof UsesWordPressPost) {
626 626
 			return $this->get_underlying_wp_object()->ID;
627 627
 		}
628 628
 
629
-		if ( $this instanceof UsesWordPressTerm ) {
629
+		if ($this instanceof UsesWordPressTerm) {
630 630
 			return $this->get_underlying_wp_object()->term_id;
631 631
 		}
632 632
 
@@ -645,8 +645,8 @@  discard block
 block discarded – undo
645 645
 	 *
646 646
 	 * @return false|string
647 647
 	 */
648
-	protected function has_map_method( $name ) {
649
-		if ( method_exists( $this, $method = "map_{$name}" ) ) {
648
+	protected function has_map_method($name) {
649
+		if (method_exists($this, $method = "map_{$name}")) {
650 650
 			return $method;
651 651
 		}
652 652
 
@@ -663,8 +663,8 @@  discard block
 block discarded – undo
663 663
 	 *
664 664
 	 * @return false|string
665 665
 	 */
666
-	protected function has_compute_method( $name ) {
667
-		if ( method_exists( $this, $method = "compute_{$name}" ) ) {
666
+	protected function has_compute_method($name) {
667
+		if (method_exists($this, $method = "compute_{$name}")) {
668 668
 			return $method;
669 669
 		}
670 670
 
@@ -685,10 +685,10 @@  discard block
 block discarded – undo
685 685
 			$this->get_wp_object_keys()
686 686
 		);
687 687
 
688
-		foreach ( $keys as $key ) {
688
+		foreach ($keys as $key) {
689 689
 			try {
690
-				$this->set_attribute( $key, null );
691
-			} catch ( GuardedPropertyException $e ) {
690
+				$this->set_attribute($key, null);
691
+			} catch (GuardedPropertyException $e) {
692 692
 				// We won't clear out guarded attributes.
693 693
 			}
694 694
 		}
@@ -722,13 +722,13 @@  discard block
 block discarded – undo
722 722
 	 * @return array
723 723
 	 */
724 724
 	protected function get_compute_methods() {
725
-		$methods = get_class_methods( get_called_class() );
726
-		$methods = array_filter( $methods, function ( $method ) {
727
-			return strrpos( $method, 'compute_', - strlen( $method ) ) !== false;
725
+		$methods = get_class_methods(get_called_class());
726
+		$methods = array_filter($methods, function($method) {
727
+			return strrpos($method, 'compute_', - strlen($method)) !== false;
728 728
 		} );
729
-		$methods = array_map( function ( $method ) {
730
-			return substr( $method, strlen( 'compute_' ) );
731
-		}, $methods );
729
+		$methods = array_map(function($method) {
730
+			return substr($method, strlen('compute_'));
731
+		}, $methods);
732 732
 
733 733
 		return $methods;
734 734
 	}
@@ -737,8 +737,8 @@  discard block
 block discarded – undo
737 737
 	 * Sets up the memo array for the creating model.
738 738
 	 */
739 739
 	private function maybe_boot() {
740
-		if ( ! isset( self::$memo[ get_called_class() ] ) ) {
741
-			self::$memo[ get_called_class() ] = array();
740
+		if (!isset(self::$memo[get_called_class()])) {
741
+			self::$memo[get_called_class()] = array();
742 742
 		}
743 743
 	}
744 744
 
Please login to merge, or discard this patch.
src/Core/Application.php 2 patches
Indentation   +133 added lines, -133 removed lines patch added patch discarded remove patch
@@ -13,137 +13,137 @@
 block discarded – undo
13 13
  * @package Intraxia\Jaxion
14 14
  */
15 15
 class Application extends Container implements ApplicationContract {
16
-	/**
17
-	 * Define plugin version on Application.
18
-	 */
19
-	const VERSION = '';
20
-
21
-	/**
22
-	 * Singleton instance of the Application object
23
-	 *
24
-	 * @var Application[]
25
-	 */
26
-	protected static $instances = array();
27
-
28
-	/**
29
-	 * Instantiates a new Application container.
30
-	 *
31
-	 * The Application constructor enforces the presence of of a single instance
32
-	 * of the Application. If an instance already exists, an Exception will be thrown.
33
-	 *
34
-	 * @param string $file
35
-	 * @param array  $providers
36
-	 *
37
-	 * @throws ApplicationAlreadyBootedException
38
-	 */
39
-	public function __construct( $file, array $providers = array() ) {
40
-		if ( isset( static::$instances[ get_called_class() ] ) ) {
41
-			throw new ApplicationAlreadyBootedException;
42
-		}
43
-
44
-		static::$instances[ get_called_class() ] = $this;
45
-
46
-		$this->register_constants( $file );
47
-		$this->register_core_services();
48
-
49
-		register_activation_hook( $file, array( $this, 'activate' ) );
50
-		register_deactivation_hook( $file, array( $this, 'deactivate' ) );
51
-
52
-		parent::__construct( $providers );
53
-	}
54
-
55
-	/**
56
-	 * {@inheritDoc}
57
-	 *
58
-	 * @throws UnexpectedValueException
59
-	 */
60
-	public function boot() {
61
-		$loader = $this->fetch( 'loader' );
62
-
63
-		if ( ! $loader instanceof LoaderContract ) {
64
-			throw new UnexpectedValueException;
65
-		}
66
-
67
-		foreach ( $this as $alias => $value ) {
68
-			if ( $value instanceof HasActions ) {
69
-				$loader->register_actions( $value );
70
-			}
71
-
72
-			if ( $value instanceof HasFilters ) {
73
-				$loader->register_filters( $value );
74
-			}
75
-
76
-			if ( $value instanceof HasShortcode ) {
77
-				$loader->register_shortcode( $value );
78
-			}
79
-		}
80
-
81
-		add_action( 'plugins_loaded', array( $loader, 'run' ) );
82
-	}
83
-
84
-	/**
85
-	 * {@inheritdoc}
86
-	 *
87
-	 * @codeCoverageIgnore
88
-	 */
89
-	public function activate() {
90
-		// no-op
91
-	}
92
-
93
-	/**
94
-	 * {@inheritdoc}
95
-	 *
96
-	 * @codeCoverageIgnore
97
-	 */
98
-	public function deactivate() {
99
-		// no-op
100
-	}
101
-
102
-	/**
103
-	 * {@inheritDoc}
104
-	 *
105
-	 * @return Application
106
-	 * @throws ApplicationNotBootedException
107
-	 */
108
-	public static function instance() {
109
-		if ( ! isset( static::$instances[ get_called_class() ] ) ) {
110
-			throw new ApplicationNotBootedException;
111
-		}
112
-
113
-		return static::$instances[ get_called_class() ];
114
-	}
115
-
116
-	/**
117
-	 * {@inheritDoc}
118
-	 */
119
-	public static function shutdown() {
120
-		if ( isset( static::$instances[ get_called_class() ] ) ) {
121
-			unset( static::$instances[ get_called_class() ] );
122
-		}
123
-	}
124
-
125
-	/**
126
-	 * Sets the plugin's url, path, and basename.
127
-	 *
128
-	 * @param string $file
129
-	 */
130
-	private function register_constants( $file ) {
131
-		$this->share( 'url', plugin_dir_url( $file ) );
132
-		$this->share( 'path', plugin_dir_path( $file ) );
133
-		$this->share( 'basename', $basename = plugin_basename( $file ) );
134
-		$this->share( 'slug', dirname( $basename ) );
135
-		$this->share( 'version', static::VERSION );
136
-	}
137
-
138
-	/**
139
-	 * Registers the built-in services with the Application container.
140
-	 */
141
-	private function register_core_services() {
142
-		$this->share( array( 'loader' => 'Intraxia\Jaxion\Contract\Core\Loader' ), function ( $app ) {
143
-			return new Loader( $app );
144
-		} );
145
-		$this->share( array( 'i18n' => 'Intaxia\Jaxion\Contract\Core\I18n' ), function ( $app ) {
146
-			return new I18n( $app->fetch( 'basename' ), $app->fetch( 'path' ) );
147
-		} );
148
-	}
16
+    /**
17
+     * Define plugin version on Application.
18
+     */
19
+    const VERSION = '';
20
+
21
+    /**
22
+     * Singleton instance of the Application object
23
+     *
24
+     * @var Application[]
25
+     */
26
+    protected static $instances = array();
27
+
28
+    /**
29
+     * Instantiates a new Application container.
30
+     *
31
+     * The Application constructor enforces the presence of of a single instance
32
+     * of the Application. If an instance already exists, an Exception will be thrown.
33
+     *
34
+     * @param string $file
35
+     * @param array  $providers
36
+     *
37
+     * @throws ApplicationAlreadyBootedException
38
+     */
39
+    public function __construct( $file, array $providers = array() ) {
40
+        if ( isset( static::$instances[ get_called_class() ] ) ) {
41
+            throw new ApplicationAlreadyBootedException;
42
+        }
43
+
44
+        static::$instances[ get_called_class() ] = $this;
45
+
46
+        $this->register_constants( $file );
47
+        $this->register_core_services();
48
+
49
+        register_activation_hook( $file, array( $this, 'activate' ) );
50
+        register_deactivation_hook( $file, array( $this, 'deactivate' ) );
51
+
52
+        parent::__construct( $providers );
53
+    }
54
+
55
+    /**
56
+     * {@inheritDoc}
57
+     *
58
+     * @throws UnexpectedValueException
59
+     */
60
+    public function boot() {
61
+        $loader = $this->fetch( 'loader' );
62
+
63
+        if ( ! $loader instanceof LoaderContract ) {
64
+            throw new UnexpectedValueException;
65
+        }
66
+
67
+        foreach ( $this as $alias => $value ) {
68
+            if ( $value instanceof HasActions ) {
69
+                $loader->register_actions( $value );
70
+            }
71
+
72
+            if ( $value instanceof HasFilters ) {
73
+                $loader->register_filters( $value );
74
+            }
75
+
76
+            if ( $value instanceof HasShortcode ) {
77
+                $loader->register_shortcode( $value );
78
+            }
79
+        }
80
+
81
+        add_action( 'plugins_loaded', array( $loader, 'run' ) );
82
+    }
83
+
84
+    /**
85
+     * {@inheritdoc}
86
+     *
87
+     * @codeCoverageIgnore
88
+     */
89
+    public function activate() {
90
+        // no-op
91
+    }
92
+
93
+    /**
94
+     * {@inheritdoc}
95
+     *
96
+     * @codeCoverageIgnore
97
+     */
98
+    public function deactivate() {
99
+        // no-op
100
+    }
101
+
102
+    /**
103
+     * {@inheritDoc}
104
+     *
105
+     * @return Application
106
+     * @throws ApplicationNotBootedException
107
+     */
108
+    public static function instance() {
109
+        if ( ! isset( static::$instances[ get_called_class() ] ) ) {
110
+            throw new ApplicationNotBootedException;
111
+        }
112
+
113
+        return static::$instances[ get_called_class() ];
114
+    }
115
+
116
+    /**
117
+     * {@inheritDoc}
118
+     */
119
+    public static function shutdown() {
120
+        if ( isset( static::$instances[ get_called_class() ] ) ) {
121
+            unset( static::$instances[ get_called_class() ] );
122
+        }
123
+    }
124
+
125
+    /**
126
+     * Sets the plugin's url, path, and basename.
127
+     *
128
+     * @param string $file
129
+     */
130
+    private function register_constants( $file ) {
131
+        $this->share( 'url', plugin_dir_url( $file ) );
132
+        $this->share( 'path', plugin_dir_path( $file ) );
133
+        $this->share( 'basename', $basename = plugin_basename( $file ) );
134
+        $this->share( 'slug', dirname( $basename ) );
135
+        $this->share( 'version', static::VERSION );
136
+    }
137
+
138
+    /**
139
+     * Registers the built-in services with the Application container.
140
+     */
141
+    private function register_core_services() {
142
+        $this->share( array( 'loader' => 'Intraxia\Jaxion\Contract\Core\Loader' ), function ( $app ) {
143
+            return new Loader( $app );
144
+        } );
145
+        $this->share( array( 'i18n' => 'Intaxia\Jaxion\Contract\Core\I18n' ), function ( $app ) {
146
+            return new I18n( $app->fetch( 'basename' ), $app->fetch( 'path' ) );
147
+        } );
148
+    }
149 149
 }
Please login to merge, or discard this patch.
Spacing   +31 added lines, -31 removed lines patch added patch discarded remove patch
@@ -36,20 +36,20 @@  discard block
 block discarded – undo
36 36
 	 *
37 37
 	 * @throws ApplicationAlreadyBootedException
38 38
 	 */
39
-	public function __construct( $file, array $providers = array() ) {
40
-		if ( isset( static::$instances[ get_called_class() ] ) ) {
39
+	public function __construct($file, array $providers = array()) {
40
+		if (isset(static::$instances[get_called_class()])) {
41 41
 			throw new ApplicationAlreadyBootedException;
42 42
 		}
43 43
 
44
-		static::$instances[ get_called_class() ] = $this;
44
+		static::$instances[get_called_class()] = $this;
45 45
 
46
-		$this->register_constants( $file );
46
+		$this->register_constants($file);
47 47
 		$this->register_core_services();
48 48
 
49
-		register_activation_hook( $file, array( $this, 'activate' ) );
50
-		register_deactivation_hook( $file, array( $this, 'deactivate' ) );
49
+		register_activation_hook($file, array($this, 'activate'));
50
+		register_deactivation_hook($file, array($this, 'deactivate'));
51 51
 
52
-		parent::__construct( $providers );
52
+		parent::__construct($providers);
53 53
 	}
54 54
 
55 55
 	/**
@@ -58,27 +58,27 @@  discard block
 block discarded – undo
58 58
 	 * @throws UnexpectedValueException
59 59
 	 */
60 60
 	public function boot() {
61
-		$loader = $this->fetch( 'loader' );
61
+		$loader = $this->fetch('loader');
62 62
 
63
-		if ( ! $loader instanceof LoaderContract ) {
63
+		if (!$loader instanceof LoaderContract) {
64 64
 			throw new UnexpectedValueException;
65 65
 		}
66 66
 
67
-		foreach ( $this as $alias => $value ) {
68
-			if ( $value instanceof HasActions ) {
69
-				$loader->register_actions( $value );
67
+		foreach ($this as $alias => $value) {
68
+			if ($value instanceof HasActions) {
69
+				$loader->register_actions($value);
70 70
 			}
71 71
 
72
-			if ( $value instanceof HasFilters ) {
73
-				$loader->register_filters( $value );
72
+			if ($value instanceof HasFilters) {
73
+				$loader->register_filters($value);
74 74
 			}
75 75
 
76
-			if ( $value instanceof HasShortcode ) {
77
-				$loader->register_shortcode( $value );
76
+			if ($value instanceof HasShortcode) {
77
+				$loader->register_shortcode($value);
78 78
 			}
79 79
 		}
80 80
 
81
-		add_action( 'plugins_loaded', array( $loader, 'run' ) );
81
+		add_action('plugins_loaded', array($loader, 'run'));
82 82
 	}
83 83
 
84 84
 	/**
@@ -106,19 +106,19 @@  discard block
 block discarded – undo
106 106
 	 * @throws ApplicationNotBootedException
107 107
 	 */
108 108
 	public static function instance() {
109
-		if ( ! isset( static::$instances[ get_called_class() ] ) ) {
109
+		if (!isset(static::$instances[get_called_class()])) {
110 110
 			throw new ApplicationNotBootedException;
111 111
 		}
112 112
 
113
-		return static::$instances[ get_called_class() ];
113
+		return static::$instances[get_called_class()];
114 114
 	}
115 115
 
116 116
 	/**
117 117
 	 * {@inheritDoc}
118 118
 	 */
119 119
 	public static function shutdown() {
120
-		if ( isset( static::$instances[ get_called_class() ] ) ) {
121
-			unset( static::$instances[ get_called_class() ] );
120
+		if (isset(static::$instances[get_called_class()])) {
121
+			unset(static::$instances[get_called_class()]);
122 122
 		}
123 123
 	}
124 124
 
@@ -127,23 +127,23 @@  discard block
 block discarded – undo
127 127
 	 *
128 128
 	 * @param string $file
129 129
 	 */
130
-	private function register_constants( $file ) {
131
-		$this->share( 'url', plugin_dir_url( $file ) );
132
-		$this->share( 'path', plugin_dir_path( $file ) );
133
-		$this->share( 'basename', $basename = plugin_basename( $file ) );
134
-		$this->share( 'slug', dirname( $basename ) );
135
-		$this->share( 'version', static::VERSION );
130
+	private function register_constants($file) {
131
+		$this->share('url', plugin_dir_url($file));
132
+		$this->share('path', plugin_dir_path($file));
133
+		$this->share('basename', $basename = plugin_basename($file));
134
+		$this->share('slug', dirname($basename));
135
+		$this->share('version', static::VERSION);
136 136
 	}
137 137
 
138 138
 	/**
139 139
 	 * Registers the built-in services with the Application container.
140 140
 	 */
141 141
 	private function register_core_services() {
142
-		$this->share( array( 'loader' => 'Intraxia\Jaxion\Contract\Core\Loader' ), function ( $app ) {
143
-			return new Loader( $app );
142
+		$this->share(array('loader' => 'Intraxia\Jaxion\Contract\Core\Loader'), function($app) {
143
+			return new Loader($app);
144 144
 		} );
145
-		$this->share( array( 'i18n' => 'Intaxia\Jaxion\Contract\Core\I18n' ), function ( $app ) {
146
-			return new I18n( $app->fetch( 'basename' ), $app->fetch( 'path' ) );
145
+		$this->share(array('i18n' => 'Intaxia\Jaxion\Contract\Core\I18n'), function($app) {
146
+			return new I18n($app->fetch('basename'), $app->fetch('path'));
147 147
 		} );
148 148
 	}
149 149
 }
Please login to merge, or discard this patch.
src/Assets/Register.php 2 patches
Indentation   +204 added lines, -204 removed lines patch added patch discarded remove patch
@@ -12,208 +12,208 @@
 block discarded – undo
12 12
  * @subpackage Register
13 13
  */
14 14
 class Register implements RegisterContract {
15
-	/**
16
-	 * Minification string for enqueued assets.
17
-	 *
18
-	 * @var string
19
-	 */
20
-	private $min = '';
21
-
22
-	/**
23
-	 * Url to the plugin directory.
24
-	 *
25
-	 * @var string
26
-	 */
27
-	protected $url;
28
-
29
-	/**
30
-	 * Script/plugin version.
31
-	 *
32
-	 * @var string
33
-	 */
34
-	protected $version;
35
-
36
-	/**
37
-	 * Array of script definition arrays.
38
-	 *
39
-	 * @var array
40
-	 */
41
-	private $scripts = array();
42
-
43
-	/**
44
-	 * Array of style definition arrays.
45
-	 *
46
-	 * @var array
47
-	 */
48
-	private $styles = array();
49
-
50
-	/**
51
-	 * Instantiates a new instance of the Register class.
52
-	 *
53
-	 * The URL param should be relative to the plugin directory. The URL
54
-	 * form should always end with a '/'. All asset location definitions
55
-	 * should not begin with a slash and should be relative to the plugin's
56
-	 * root directory. The URL provided by default from the Application
57
-	 * class is compatible.
58
-	 *
59
-	 * @param string $url
60
-	 * @param string $version
61
-	 */
62
-	public function __construct( $url, $version = null ) {
63
-		$this->url     = $url;
64
-		$this->version = $version ?: null; // Empty string should remain null.
65
-	}
66
-
67
-	/**
68
-	 * {@inheritdoc}
69
-	 *
70
-	 * @param bool $debug
71
-	 */
72
-	public function set_debug( $debug ) {
73
-		if ( $debug ) {
74
-			$this->min = '.min';
75
-		} else {
76
-			$this->min = '';
77
-		}
78
-	}
79
-
80
-	/**
81
-	 * {@inheritdoc}
82
-	 *
83
-	 * @param array $script
84
-	 */
85
-	public function register_script( $script ) {
86
-		$this->scripts[] = $script;
87
-	}
88
-
89
-	/**
90
-	 * {@inheritdoc}
91
-	 *
92
-	 * @param array $style
93
-	 */
94
-	public function register_style( $style ) {
95
-		$this->styles[] = $style;
96
-	}
97
-
98
-	/**
99
-	 * {@inheritDoc}
100
-	 */
101
-	public function enqueue_web_scripts() {
102
-		foreach ( $this->scripts as $script ) {
103
-			if ( in_array( $script['type'], array( 'web', 'shared' ) ) ) {
104
-				$this->enqueue_script( $script );
105
-			}
106
-		}
107
-	}
108
-
109
-	/**
110
-	 * {@inheritDoc}
111
-	 */
112
-	public function enqueue_web_styles() {
113
-		foreach ( $this->styles as $style ) {
114
-			if ( in_array( $style['type'], array( 'web', 'shared' ) ) ) {
115
-				$this->enqueue_style( $style );
116
-			}
117
-		}
118
-	}
119
-
120
-	/**
121
-	 * {@inheritDoc}
122
-	 *
123
-	 * @param string $hook Passes a string representing the current page.
124
-	 */
125
-	public function enqueue_admin_scripts( $hook ) {
126
-		foreach ( $this->scripts as $script ) {
127
-			if ( in_array( $script['type'], array( 'admin', 'shared' ) ) ) {
128
-				$this->enqueue_script( $script, $hook );
129
-			}
130
-		}
131
-	}
132
-
133
-	/**
134
-	 * {@inheritDoc}
135
-	 *
136
-	 * @param string $hook Passes a string representing the current page.
137
-	 */
138
-	public function enqueue_admin_styles( $hook ) {
139
-		foreach ( $this->styles as $style ) {
140
-			if ( in_array( $style['type'], array( 'admin', 'shared' ) ) ) {
141
-				$this->enqueue_style( $style, $hook );
142
-			}
143
-		}
144
-	}
145
-
146
-	/**
147
-	 * {@inheritDoc}
148
-	 *
149
-	 * @return array[]
150
-	 */
151
-	public function action_hooks() {
152
-		return array(
153
-			array(
154
-				'hook'   => 'wp_enqueue_scripts',
155
-				'method' => 'enqueue_web_scripts',
156
-			),
157
-			array(
158
-				'hook'   => 'wp_enqueue_scripts',
159
-				'method' => 'enqueue_web_styles',
160
-			),
161
-			array(
162
-				'hook'   => 'admin_enqueue_scripts',
163
-				'method' => 'enqueue_admin_scripts',
164
-			),
165
-			array(
166
-				'hook'   => 'admin_enqueue_scripts',
167
-				'method' => 'enqueue_admin_styles',
168
-			),
169
-		);
170
-	}
171
-
172
-	/**
173
-	 * Enqueues an individual script if the style's condition is met.
174
-	 *
175
-	 * @param array  $script The script attachment callback.
176
-	 * @param string $hook   The location hook. Only passed on admin side.
177
-	 */
178
-	protected function enqueue_script( $script, $hook = null ) {
179
-		if ( $script['condition']( $hook ) ) {
180
-			wp_enqueue_script(
181
-				$script['handle'],
182
-				$this->url . $script['src'] . '.js',
183
-				isset( $script['deps'] ) ? $script['deps'] : array(),
184
-				$this->version,
185
-				isset( $script['footer'] ) ? $script['footer'] : false
186
-			);
187
-
188
-			if ( isset( $script['localize'] ) ) {
189
-				if ( is_callable( $script['localize'] ) ) { // @todo make all properties callables
190
-					$script['localize'] = call_user_func( $script['localize'] );
191
-				}
192
-
193
-				wp_localize_script(
194
-					$script['handle'],
195
-					$script['localize']['name'],
196
-					$script['localize']['data']
197
-				);
198
-			}
199
-		}
200
-	}
201
-
202
-	/**
203
-	 * Enqueues an individual stylesheet if the style's condition is met.
204
-	 *
205
-	 * @param array  $style The style attachment callback.
206
-	 * @param string $hook  The location hook.
207
-	 */
208
-	protected function enqueue_style( $style, $hook = null ) {
209
-		if ( $style['condition']( $hook ) ) {
210
-			wp_enqueue_style(
211
-				$style['handle'],
212
-				$this->url . $style['src'] . '.css',
213
-				isset( $style['deps'] ) ? $style['deps'] : array(),
214
-				$this->version,
215
-				isset( $style['media'] ) ? $style['media'] : 'all'
216
-			);
217
-		}
218
-	}
15
+    /**
16
+     * Minification string for enqueued assets.
17
+     *
18
+     * @var string
19
+     */
20
+    private $min = '';
21
+
22
+    /**
23
+     * Url to the plugin directory.
24
+     *
25
+     * @var string
26
+     */
27
+    protected $url;
28
+
29
+    /**
30
+     * Script/plugin version.
31
+     *
32
+     * @var string
33
+     */
34
+    protected $version;
35
+
36
+    /**
37
+     * Array of script definition arrays.
38
+     *
39
+     * @var array
40
+     */
41
+    private $scripts = array();
42
+
43
+    /**
44
+     * Array of style definition arrays.
45
+     *
46
+     * @var array
47
+     */
48
+    private $styles = array();
49
+
50
+    /**
51
+     * Instantiates a new instance of the Register class.
52
+     *
53
+     * The URL param should be relative to the plugin directory. The URL
54
+     * form should always end with a '/'. All asset location definitions
55
+     * should not begin with a slash and should be relative to the plugin's
56
+     * root directory. The URL provided by default from the Application
57
+     * class is compatible.
58
+     *
59
+     * @param string $url
60
+     * @param string $version
61
+     */
62
+    public function __construct( $url, $version = null ) {
63
+        $this->url     = $url;
64
+        $this->version = $version ?: null; // Empty string should remain null.
65
+    }
66
+
67
+    /**
68
+     * {@inheritdoc}
69
+     *
70
+     * @param bool $debug
71
+     */
72
+    public function set_debug( $debug ) {
73
+        if ( $debug ) {
74
+            $this->min = '.min';
75
+        } else {
76
+            $this->min = '';
77
+        }
78
+    }
79
+
80
+    /**
81
+     * {@inheritdoc}
82
+     *
83
+     * @param array $script
84
+     */
85
+    public function register_script( $script ) {
86
+        $this->scripts[] = $script;
87
+    }
88
+
89
+    /**
90
+     * {@inheritdoc}
91
+     *
92
+     * @param array $style
93
+     */
94
+    public function register_style( $style ) {
95
+        $this->styles[] = $style;
96
+    }
97
+
98
+    /**
99
+     * {@inheritDoc}
100
+     */
101
+    public function enqueue_web_scripts() {
102
+        foreach ( $this->scripts as $script ) {
103
+            if ( in_array( $script['type'], array( 'web', 'shared' ) ) ) {
104
+                $this->enqueue_script( $script );
105
+            }
106
+        }
107
+    }
108
+
109
+    /**
110
+     * {@inheritDoc}
111
+     */
112
+    public function enqueue_web_styles() {
113
+        foreach ( $this->styles as $style ) {
114
+            if ( in_array( $style['type'], array( 'web', 'shared' ) ) ) {
115
+                $this->enqueue_style( $style );
116
+            }
117
+        }
118
+    }
119
+
120
+    /**
121
+     * {@inheritDoc}
122
+     *
123
+     * @param string $hook Passes a string representing the current page.
124
+     */
125
+    public function enqueue_admin_scripts( $hook ) {
126
+        foreach ( $this->scripts as $script ) {
127
+            if ( in_array( $script['type'], array( 'admin', 'shared' ) ) ) {
128
+                $this->enqueue_script( $script, $hook );
129
+            }
130
+        }
131
+    }
132
+
133
+    /**
134
+     * {@inheritDoc}
135
+     *
136
+     * @param string $hook Passes a string representing the current page.
137
+     */
138
+    public function enqueue_admin_styles( $hook ) {
139
+        foreach ( $this->styles as $style ) {
140
+            if ( in_array( $style['type'], array( 'admin', 'shared' ) ) ) {
141
+                $this->enqueue_style( $style, $hook );
142
+            }
143
+        }
144
+    }
145
+
146
+    /**
147
+     * {@inheritDoc}
148
+     *
149
+     * @return array[]
150
+     */
151
+    public function action_hooks() {
152
+        return array(
153
+            array(
154
+                'hook'   => 'wp_enqueue_scripts',
155
+                'method' => 'enqueue_web_scripts',
156
+            ),
157
+            array(
158
+                'hook'   => 'wp_enqueue_scripts',
159
+                'method' => 'enqueue_web_styles',
160
+            ),
161
+            array(
162
+                'hook'   => 'admin_enqueue_scripts',
163
+                'method' => 'enqueue_admin_scripts',
164
+            ),
165
+            array(
166
+                'hook'   => 'admin_enqueue_scripts',
167
+                'method' => 'enqueue_admin_styles',
168
+            ),
169
+        );
170
+    }
171
+
172
+    /**
173
+     * Enqueues an individual script if the style's condition is met.
174
+     *
175
+     * @param array  $script The script attachment callback.
176
+     * @param string $hook   The location hook. Only passed on admin side.
177
+     */
178
+    protected function enqueue_script( $script, $hook = null ) {
179
+        if ( $script['condition']( $hook ) ) {
180
+            wp_enqueue_script(
181
+                $script['handle'],
182
+                $this->url . $script['src'] . '.js',
183
+                isset( $script['deps'] ) ? $script['deps'] : array(),
184
+                $this->version,
185
+                isset( $script['footer'] ) ? $script['footer'] : false
186
+            );
187
+
188
+            if ( isset( $script['localize'] ) ) {
189
+                if ( is_callable( $script['localize'] ) ) { // @todo make all properties callables
190
+                    $script['localize'] = call_user_func( $script['localize'] );
191
+                }
192
+
193
+                wp_localize_script(
194
+                    $script['handle'],
195
+                    $script['localize']['name'],
196
+                    $script['localize']['data']
197
+                );
198
+            }
199
+        }
200
+    }
201
+
202
+    /**
203
+     * Enqueues an individual stylesheet if the style's condition is met.
204
+     *
205
+     * @param array  $style The style attachment callback.
206
+     * @param string $hook  The location hook.
207
+     */
208
+    protected function enqueue_style( $style, $hook = null ) {
209
+        if ( $style['condition']( $hook ) ) {
210
+            wp_enqueue_style(
211
+                $style['handle'],
212
+                $this->url . $style['src'] . '.css',
213
+                isset( $style['deps'] ) ? $style['deps'] : array(),
214
+                $this->version,
215
+                isset( $style['media'] ) ? $style['media'] : 'all'
216
+            );
217
+        }
218
+    }
219 219
 }
Please login to merge, or discard this patch.
Spacing   +32 added lines, -32 removed lines patch added patch discarded remove patch
@@ -59,7 +59,7 @@  discard block
 block discarded – undo
59 59
 	 * @param string $url
60 60
 	 * @param string $version
61 61
 	 */
62
-	public function __construct( $url, $version = null ) {
62
+	public function __construct($url, $version = null) {
63 63
 		$this->url     = $url;
64 64
 		$this->version = $version ?: null; // Empty string should remain null.
65 65
 	}
@@ -69,8 +69,8 @@  discard block
 block discarded – undo
69 69
 	 *
70 70
 	 * @param bool $debug
71 71
 	 */
72
-	public function set_debug( $debug ) {
73
-		if ( $debug ) {
72
+	public function set_debug($debug) {
73
+		if ($debug) {
74 74
 			$this->min = '.min';
75 75
 		} else {
76 76
 			$this->min = '';
@@ -82,7 +82,7 @@  discard block
 block discarded – undo
82 82
 	 *
83 83
 	 * @param array $script
84 84
 	 */
85
-	public function register_script( $script ) {
85
+	public function register_script($script) {
86 86
 		$this->scripts[] = $script;
87 87
 	}
88 88
 
@@ -91,7 +91,7 @@  discard block
 block discarded – undo
91 91
 	 *
92 92
 	 * @param array $style
93 93
 	 */
94
-	public function register_style( $style ) {
94
+	public function register_style($style) {
95 95
 		$this->styles[] = $style;
96 96
 	}
97 97
 
@@ -99,9 +99,9 @@  discard block
 block discarded – undo
99 99
 	 * {@inheritDoc}
100 100
 	 */
101 101
 	public function enqueue_web_scripts() {
102
-		foreach ( $this->scripts as $script ) {
103
-			if ( in_array( $script['type'], array( 'web', 'shared' ) ) ) {
104
-				$this->enqueue_script( $script );
102
+		foreach ($this->scripts as $script) {
103
+			if (in_array($script['type'], array('web', 'shared'))) {
104
+				$this->enqueue_script($script);
105 105
 			}
106 106
 		}
107 107
 	}
@@ -110,9 +110,9 @@  discard block
 block discarded – undo
110 110
 	 * {@inheritDoc}
111 111
 	 */
112 112
 	public function enqueue_web_styles() {
113
-		foreach ( $this->styles as $style ) {
114
-			if ( in_array( $style['type'], array( 'web', 'shared' ) ) ) {
115
-				$this->enqueue_style( $style );
113
+		foreach ($this->styles as $style) {
114
+			if (in_array($style['type'], array('web', 'shared'))) {
115
+				$this->enqueue_style($style);
116 116
 			}
117 117
 		}
118 118
 	}
@@ -122,10 +122,10 @@  discard block
 block discarded – undo
122 122
 	 *
123 123
 	 * @param string $hook Passes a string representing the current page.
124 124
 	 */
125
-	public function enqueue_admin_scripts( $hook ) {
126
-		foreach ( $this->scripts as $script ) {
127
-			if ( in_array( $script['type'], array( 'admin', 'shared' ) ) ) {
128
-				$this->enqueue_script( $script, $hook );
125
+	public function enqueue_admin_scripts($hook) {
126
+		foreach ($this->scripts as $script) {
127
+			if (in_array($script['type'], array('admin', 'shared'))) {
128
+				$this->enqueue_script($script, $hook);
129 129
 			}
130 130
 		}
131 131
 	}
@@ -135,10 +135,10 @@  discard block
 block discarded – undo
135 135
 	 *
136 136
 	 * @param string $hook Passes a string representing the current page.
137 137
 	 */
138
-	public function enqueue_admin_styles( $hook ) {
139
-		foreach ( $this->styles as $style ) {
140
-			if ( in_array( $style['type'], array( 'admin', 'shared' ) ) ) {
141
-				$this->enqueue_style( $style, $hook );
138
+	public function enqueue_admin_styles($hook) {
139
+		foreach ($this->styles as $style) {
140
+			if (in_array($style['type'], array('admin', 'shared'))) {
141
+				$this->enqueue_style($style, $hook);
142 142
 			}
143 143
 		}
144 144
 	}
@@ -175,19 +175,19 @@  discard block
 block discarded – undo
175 175
 	 * @param array  $script The script attachment callback.
176 176
 	 * @param string $hook   The location hook. Only passed on admin side.
177 177
 	 */
178
-	protected function enqueue_script( $script, $hook = null ) {
179
-		if ( $script['condition']( $hook ) ) {
178
+	protected function enqueue_script($script, $hook = null) {
179
+		if ($script['condition']($hook)) {
180 180
 			wp_enqueue_script(
181 181
 				$script['handle'],
182
-				$this->url . $script['src'] . '.js',
183
-				isset( $script['deps'] ) ? $script['deps'] : array(),
182
+				$this->url.$script['src'].'.js',
183
+				isset($script['deps']) ? $script['deps'] : array(),
184 184
 				$this->version,
185
-				isset( $script['footer'] ) ? $script['footer'] : false
185
+				isset($script['footer']) ? $script['footer'] : false
186 186
 			);
187 187
 
188
-			if ( isset( $script['localize'] ) ) {
189
-				if ( is_callable( $script['localize'] ) ) { // @todo make all properties callables
190
-					$script['localize'] = call_user_func( $script['localize'] );
188
+			if (isset($script['localize'])) {
189
+				if (is_callable($script['localize'])) { // @todo make all properties callables
190
+					$script['localize'] = call_user_func($script['localize']);
191 191
 				}
192 192
 
193 193
 				wp_localize_script(
@@ -205,14 +205,14 @@  discard block
 block discarded – undo
205 205
 	 * @param array  $style The style attachment callback.
206 206
 	 * @param string $hook  The location hook.
207 207
 	 */
208
-	protected function enqueue_style( $style, $hook = null ) {
209
-		if ( $style['condition']( $hook ) ) {
208
+	protected function enqueue_style($style, $hook = null) {
209
+		if ($style['condition']($hook)) {
210 210
 			wp_enqueue_style(
211 211
 				$style['handle'],
212
-				$this->url . $style['src'] . '.css',
213
-				isset( $style['deps'] ) ? $style['deps'] : array(),
212
+				$this->url.$style['src'].'.css',
213
+				isset($style['deps']) ? $style['deps'] : array(),
214 214
 				$this->version,
215
-				isset( $style['media'] ) ? $style['media'] : 'all'
215
+				isset($style['media']) ? $style['media'] : 'all'
216 216
 			);
217 217
 		}
218 218
 	}
Please login to merge, or discard this patch.
src/Contract/Assets/Register.php 2 patches
Indentation   +48 added lines, -48 removed lines patch added patch discarded remove patch
@@ -4,52 +4,52 @@
 block discarded – undo
4 4
 use Intraxia\Jaxion\Contract\Core\HasActions;
5 5
 
6 6
 interface Register extends HasActions {
7
-	/**
8
-	 * Enable debug mode for the enqueued assets.
9
-	 *
10
-	 * Debug mode will enqueue unminified versions of the registered assets.
11
-	 * Primarily, this is intended to be used along with WordPress's `SCRIPT_DEBUG`
12
-	 * constant, which enables unminified core assets to be enqueued.
13
-	 *
14
-	 * @param bool $debug
15
-	 */
16
-	public function set_debug( $debug );
17
-
18
-	/**
19
-	 * Provides a method to register new scripts outside of the constructor.
20
-	 *
21
-	 * @param array $script
22
-	 */
23
-	public function register_script( $script );
24
-
25
-	/**
26
-	 * Provides a method to register new styles outside of the constructor.
27
-	 *
28
-	 * @param array $style
29
-	 */
30
-	public function register_style( $style );
31
-
32
-	/**
33
-	 * Enqueues the web & shared scripts on the Register.
34
-	 */
35
-	public function enqueue_web_scripts();
36
-
37
-	/**
38
-	 * Enqueues the web & shared styles on the Register.
39
-	 */
40
-	public function enqueue_web_styles();
41
-
42
-	/**
43
-	 * Enqueues the admin & shared scripts on the Register.
44
-	 *
45
-	 * @param string $hook Passes a string representing the current page.
46
-	 */
47
-	public function enqueue_admin_scripts( $hook );
48
-
49
-	/**
50
-	 * Enqueues the admin & shared styles on the Register.
51
-	 *
52
-	 * @param string $hook Passes a string representing the current page.
53
-	 */
54
-	public function enqueue_admin_styles( $hook );
7
+    /**
8
+     * Enable debug mode for the enqueued assets.
9
+     *
10
+     * Debug mode will enqueue unminified versions of the registered assets.
11
+     * Primarily, this is intended to be used along with WordPress's `SCRIPT_DEBUG`
12
+     * constant, which enables unminified core assets to be enqueued.
13
+     *
14
+     * @param bool $debug
15
+     */
16
+    public function set_debug( $debug );
17
+
18
+    /**
19
+     * Provides a method to register new scripts outside of the constructor.
20
+     *
21
+     * @param array $script
22
+     */
23
+    public function register_script( $script );
24
+
25
+    /**
26
+     * Provides a method to register new styles outside of the constructor.
27
+     *
28
+     * @param array $style
29
+     */
30
+    public function register_style( $style );
31
+
32
+    /**
33
+     * Enqueues the web & shared scripts on the Register.
34
+     */
35
+    public function enqueue_web_scripts();
36
+
37
+    /**
38
+     * Enqueues the web & shared styles on the Register.
39
+     */
40
+    public function enqueue_web_styles();
41
+
42
+    /**
43
+     * Enqueues the admin & shared scripts on the Register.
44
+     *
45
+     * @param string $hook Passes a string representing the current page.
46
+     */
47
+    public function enqueue_admin_scripts( $hook );
48
+
49
+    /**
50
+     * Enqueues the admin & shared styles on the Register.
51
+     *
52
+     * @param string $hook Passes a string representing the current page.
53
+     */
54
+    public function enqueue_admin_styles( $hook );
55 55
 }
Please login to merge, or discard this patch.
Spacing   +5 added lines, -5 removed lines patch added patch discarded remove patch
@@ -13,21 +13,21 @@  discard block
 block discarded – undo
13 13
 	 *
14 14
 	 * @param bool $debug
15 15
 	 */
16
-	public function set_debug( $debug );
16
+	public function set_debug($debug);
17 17
 
18 18
 	/**
19 19
 	 * Provides a method to register new scripts outside of the constructor.
20 20
 	 *
21 21
 	 * @param array $script
22 22
 	 */
23
-	public function register_script( $script );
23
+	public function register_script($script);
24 24
 
25 25
 	/**
26 26
 	 * Provides a method to register new styles outside of the constructor.
27 27
 	 *
28 28
 	 * @param array $style
29 29
 	 */
30
-	public function register_style( $style );
30
+	public function register_style($style);
31 31
 
32 32
 	/**
33 33
 	 * Enqueues the web & shared scripts on the Register.
@@ -44,12 +44,12 @@  discard block
 block discarded – undo
44 44
 	 *
45 45
 	 * @param string $hook Passes a string representing the current page.
46 46
 	 */
47
-	public function enqueue_admin_scripts( $hook );
47
+	public function enqueue_admin_scripts($hook);
48 48
 
49 49
 	/**
50 50
 	 * Enqueues the admin & shared styles on the Register.
51 51
 	 *
52 52
 	 * @param string $hook Passes a string representing the current page.
53 53
 	 */
54
-	public function enqueue_admin_styles( $hook );
54
+	public function enqueue_admin_styles($hook);
55 55
 }
Please login to merge, or discard this patch.