1 | <?php |
||
14 | final class GravityView_Fields { |
||
15 | |||
16 | /* @var GravityView_Field[] */ |
||
17 | protected static $_fields = array(); |
||
18 | |||
19 | /** |
||
20 | * @param GravityView_Field $field Field to register |
||
21 | * |
||
22 | * @throws Exception If requirements aren't met |
||
23 | * |
||
24 | * @return void |
||
25 | */ |
||
26 | public static function register( $field ) { |
||
27 | if ( ! is_subclass_of( $field, 'GravityView_Field' ) ) { |
||
28 | throw new Exception( 'Must be a subclass of GravityView_Field' ); |
||
29 | } |
||
30 | if ( empty( $field->name ) ) { |
||
31 | throw new Exception( 'The name must be set' ); |
||
32 | } |
||
33 | if ( isset( self::$_fields[ $field->name ] ) && ! defined( 'DOING_GRAVITYVIEW_TESTS' ) ) { |
||
34 | throw new Exception( 'Field type already registered: ' . $field->name ); |
||
35 | } |
||
36 | self::$_fields[ $field->name ] = $field; |
||
37 | } |
||
38 | |||
39 | /** |
||
40 | * @param array $properties |
||
41 | * |
||
42 | * @return GravityView_Field | bool |
||
43 | */ |
||
44 | public static function create( $properties ) { |
||
45 | $type = isset( $properties['type'] ) ? $properties['type'] : ''; |
||
46 | $type = empty( $properties['inputType'] ) ? $type : $properties['inputType']; |
||
47 | if ( empty( $type ) || ! isset( self::$_fields[ $type ] ) ) { |
||
48 | return new GravityView_Field( $properties ); |
||
|
|||
49 | } |
||
50 | $class = self::$_fields[ $type ]; |
||
51 | $class_name = get_class( $class ); |
||
52 | $field = new $class_name( $properties ); |
||
53 | |||
54 | return $field; |
||
55 | } |
||
56 | |||
57 | /** |
||
58 | * Does the field exist (has it been registered)? |
||
59 | * |
||
60 | * @param string $field_name |
||
61 | * |
||
62 | * @return bool True: yes, it exists; False: nope |
||
63 | */ |
||
64 | public static function exists( $field_name ) { |
||
67 | |||
68 | /** |
||
69 | * @param string $field_name |
||
70 | * |
||
71 | * @return GravityView_Field|false |
||
72 | */ |
||
73 | public static function get_instance( $field_name ) { |
||
76 | |||
77 | /** |
||
78 | * Alias for get_instance() |
||
79 | * |
||
80 | * @param $field_name |
||
81 | * |
||
82 | * @return GravityView_Field|false |
||
83 | */ |
||
84 | public static function get( $field_name ) { |
||
87 | |||
88 | /** |
||
89 | * Alias for get_instance() |
||
90 | * |
||
91 | * @param string|GF_Field $field_name Gravity Forms field class or the class name type |
||
92 | * |
||
93 | * @return GravityView_Field |
||
94 | */ |
||
95 | public static function get_associated_field( $gf_field ) { |
||
107 | |||
108 | /** |
||
109 | * Get all fields |
||
110 | * |
||
111 | * @since 1.16 Added $group parameter |
||
112 | * |
||
113 | * @param string $group Optional. If defined, fetch all fields in a group |
||
114 | * |
||
115 | * @return GravityView_Field[] |
||
116 | */ |
||
117 | public static function get_all( $group = '' ) { |
||
131 | |||
132 | } |
This check compares calls to functions or methods with their respective definitions. If the call has more arguments than are defined, it raises an issue.
If a function is defined several times with a different number of parameters, the check may pick up the wrong definition and report false positives. One codebase where this has been known to happen is Wordpress.
In this case you can add the
@ignore
PhpDoc annotation to the duplicate definition and it will be ignored.