Passed
Push — master ( 8a0962...507d84 )
by Paul
03:52
created

DefaultsAbstract::__call()   A

Complexity

Conditions 2
Paths 2

Size

Total Lines 8
Code Lines 6

Duplication

Lines 0
Ratio 0 %

Code Coverage

Tests 7
CRAP Score 2

Importance

Changes 0
Metric Value
cc 2
eloc 6
nc 2
nop 2
dl 0
loc 8
ccs 7
cts 7
cp 1
crap 2
rs 10
c 0
b 0
f 0
1
<?php
2
3
namespace GeminiLabs\SiteReviews\Defaults;
4
5
use GeminiLabs\SiteReviews\Helper;
6
use ReflectionClass;
7
8
abstract class DefaultsAbstract
9
{
10
	/**
11
	 * @param string $name
12
	 * @return void|array
13
	 */
14 7
	public function __call( $name, array $args = [] )
15
	{
16 7
		if( !method_exists( $this, $name ))return;
17 7
		$defaults = call_user_func_array( [$this, $name], $args );
18 7
		$className = (new ReflectionClass( $this ))->getShortName();
19 7
		$className = str_replace( 'Defaults', '', $className );
20 7
		$className = glsr( Helper::class )->dashCase( $className );
21 7
		return apply_filters( 'site-reviews/defaults/'.$className, $defaults, $name );
22
	}
23
24
	/**
25
	 * @return array
26
	 */
27
	abstract protected function defaults();
28
29
	/**
30
	 * @return array
31
	 */
32
	protected function merge( array $values = [] )
33
	{
34
		return wp_parse_args( $values, $this->defaults() );
35
	}
36
37
	/**
38
	 * @return array
39
	 */
40 7
	protected function restrict( array $values = [] )
41
	{
42 7
		return shortcode_atts( $this->defaults(), $values );
43
	}
44
}
45